My Grails Service вызывает плагин, который генерирует исключение во время выполнения. В моем случае, я не забочусь об исключении, поэтому он проглатывается.Grails UnexpectedRollbackException в контроллере
MyGrailsService {
def myMethod {
...
try {
//callPlugin
} catch (Exception ex) {
...
}
}
}
Все прекрасное, исключение поймано и обработка продолжается. Однако в моем контроллере у меня есть блок catch (Throwable t)
, который я не ожидаю получить, потому что исключение проглочено. Оказывается, блок catch (Throwable t)
выполнен, потому что Grails выбрасывает a org.springframework.transaction.UnexpectedRollbackException
, который, конечно, я не хочу, чтобы это делалось. Наверное, я получаю это, потому что исключение, которое плагин вызывает, - это время выполнения, поэтому Grails откатывает транзакцию.
Я не хочу, чтобы этот UnexpectedRollbackException
был брошен.
Любые советы?
Я столкнулся с подобной ситуацией и был так же озадачен. В моем случае это было чистое и прагматичное решение, позволяющее исключить исключение из исключения, прежде всего, путем проверки данных перед вызовом функции. Но, очевидно, существует множество сценариев, в которых это невозможно или желательно. – peterp