我試圖實現異常處理的休眠引發的樂觀鎖類型異常,但我遇到了一個奇怪的問題。看來我無法抓住任何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
當然,我會這樣做 –