如果我有像下面這樣的事務處理方法,那麼在事務提交和回滾的情況下,何時執行finally塊?例如,如果「用hibernate持久化數據庫中的某個實體」會引發一些真實的hibernate異常?如何用finally塊在事務性上下文中處理異常?
1)事務回滾 2)最後塊執行
或
1)最後被執行塊 2)事務回滾
public void someTransactionalPersist(...) {
try {
// persist some entity in database with hibernate
} finally {
// do something
}
}
我懷疑過回滾第一則finally塊,因爲交易將通過將圍繞方法someTransactionalPersist所以離開這個方法方面的執行將嘗試回滾之後方面進行管理,則可以解釋,爲什麼先回滾? –
回滾將在發生任何錯誤時調用。最後,塊將始終運行,並且嘗試塊的最後一行。 – subodh
是的同意,但回滾將由方面完成,所以它會在執行方法 –