【发布时间】:2014-11-28 18:10:18
【问题描述】:
我的 Grails 服务调用了一个引发运行时异常的插件。就我而言,我不关心异常,所以它被吞下了。
MyGrailsService {
def myMethod {
...
try {
//callPlugin
} catch (Exception ex) {
...
}
}
}
一切正常,异常被捕获并继续处理。但是,在我的控制器中,我有一个 catch (Throwable t) 块,我不希望它被执行,因为异常被吞没了。原来 catch (Throwable t) 块被执行是因为 Grails 抛出了一个 org.springframework.transaction.UnexpectedRollbackException
我当然不希望它这样做。我想我得到这个是因为插件抛出的异常是运行时的,所以 Grails 回滚了事务。
我不希望这个 UnexpectedRollbackException 被抛出。
有什么建议吗?
【问题讨论】:
-
我也遇到过类似的情况,也同样疑惑。就我而言,这是一个干净而实用的解决方案,通过在调用函数之前检查数据来避免首先引发异常。但显然在很多情况下这是不可能或不可取的。
标签: spring grails transactions spring-transactions