聲明事務@Transactional 默認是遇到 RuntimeException拋出則回滾,下面代碼將范圍擴大,遇到Exception被拋出就回滾(210行)。
如果主要代碼被try catch 了,catch 里面如果沒有拋出異常(232行),吞沒了異常,那么事務會失效。這一點大家已經都知道了。
現在要討論是另一種值得注意的情況是 : 加上了finally 之后,catch里面即使拋出了異常,事務也會失效。如下代碼事務是有效的,但如果將 234 和236 行注釋放開,再運行代碼事務就會失效了