異常被 」吃「 掉導致事務無法回滾

2021-10-24 07:49:18 字數 561 閱讀 2969

我們在處理異常時,有兩種方式,要麼丟擲去,讓上一層來捕獲處理;要麼把異常 try catch 掉,在異常出現的地方給處理掉。就因為有這中 try…catch,所以導致異常被 」吃「 掉,事務無法回滾。我們還是看上面那個例子,只不過簡單修改一下**:

@service

public

class

userserviceimpl

implements

userservice

catch

(exception e)

}}

讀者可以使用我原始碼中 controller 的介面,通過 postman 測試一下,就會發現,仍然是可以插入一條

使用者資料,說明事務並沒有因為丟擲異常而回滾。這個細節往往比上面那個坑更難以發現,因為我們的

思維很容易導致 try…catch **的產生,一旦出現這種問題,往往排查起來比較費勁,所以我們平時在

寫**時,一定要多思考,多注意這種細節,盡量避免給自己埋坑。

那這種怎麼解決呢?直接往上拋,給上一層來處理即可,千萬不要在事務中把異常自己 」吃「 掉。

truncate方法導致事務回滾失效

前景提要 配置多資料來源,配置事務,刪除資料並重新新增資料,新增出現問題後無法回滾。檢查結果 刪除使用的truncate方法,該方法在plsql中執行無需submit。無論是oracle資料庫,還是mysql資料庫,刪除使用truncate放,都無法利用事務回滾。知識點 1.刪除表中的資料的方法有d...

oracle事務鎖導致事務無法提交的問題

今天在修改bug的過程中,一條更新資料的sql執行怎麼也執行不了,進入貌似 排隊 的情況,一直處於等待的狀態,第一直覺是事務鎖起到壞作用,後在專案組高手的協助下找到了原因,是資料被鎖住了。一般查詢是否被鎖住可以做如下操作 以系統資料庫管理員的身份登入 無連線啟動sqlplus sqlplus nol...

oracle事務鎖導致事務無法提交的問題

以系統資料庫管理員的身份登入 無連線啟動sqlplus sqlplus nolog 以sysdba的身份連線資料庫 conn as sysdba 檢視被鎖的資料物件 查詢被鎖的資料物件 select t2.username,t2.sid,t2.serial t2.logon time from v ...