【发布时间】:2012-09-17 00:14:43
【问题描述】:
我正在尝试对 Hibernate 抛出的乐观锁类型异常进行异常处理,但我遇到了一个奇怪的问题。看来我无法捕捉到任何 Gorm 异常。
例如,我的服务中有此代码:
try {
User user = User.get(1);
Thread.sleep(10000);
user.viewedAt(new Date());
user.save(flush:true);
} catch (OptimisticLockingException ex) {
log.error("Optimistic lock exception");
} catch (StaleObjectStateException ex) {
log.error("Optimistic lock exception");
}
当我用两个线程访问这个块时,它会爆炸,异常会传播到 Grails 的标准异常处理程序。即使报告的异常是 StaleObjectStateException,也不会调用 catch 块。
我注意到如果我让异常传播到控制器并在那里捕获它,我可以捕获它,但似乎我无法在服务中实现异常处理,这很奇怪。
我错过了什么?
【问题讨论】:
标签: grails exception-handling grails-orm