Java 的異常類圖結構


兩種異常的分類方式:
第一種:運行時異常(RuntimeException)、非運行時異常 (Exception 下除了RuntimeException及其子類的其他異常)
第二種:受檢異常(非運行時異常)、非受檢異常(RuntimeException和Error)
Spring @Transactional 注解的作用
@Transactional 是Spring框架的事務管理,作用是如果業務對數據庫操作出現異常的情況下可以回滾數據庫操作。
Spring框架的事務管理默認是只在發生不受控異常(RuntimeException和Error)時才進行事務回滾。
實際上是Spring 會把Error 轉化成 RuntimeException 從而進行事務回滾。
當業務操作中發生了受檢異常(即Exception 下除了RuntimeException及其子類的其他異常)時不會進行事務回滾。
rollbackFor 屬性介紹
在實際開發中我們是希望發生任何異常都要發生回滾操作,即在發生受檢異常的情況下也要進行事務回滾,默認情況下@Transactional 的不足:在發生受檢異常時(Exception 下除了RuntimeException及其子類的其他異常)不會回滾。
解決辦法:在@Transactional 注解中增加 rollbackFor 設置rollbackFor 屬性值。
即:
@Transactional(rollbackFor = Exception.class)
@Transactional 注解的全部屬性詳解
|