我试图实现异常处理的休眠引发的乐观锁类型异常,但我遇到了一个奇怪的问题。看来我无法抓住任何Gorm异常。如何处理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邮件列表中,以便纠正行为或者在此问题上添加更好的文档。 – cdeszaq
当然,我会这样做 –