springboot中有了全局異常捕獲,還需要try catch嗎?


  今天在碼代碼的時候突然想到這個問題,覺得有點困惑。在網上也翻閱不少帖子其中有一個帖子給了我一個思路,其實也是解釋了基礎概念。

概念一:try catch 語句在try里面捕獲到異常之后會進入catch子句內,執行catch內的代碼。

概念二:springboot中的全局異常處理在捕獲到異常之后,異常代碼之后的語句是不會再運行了的

 

  那么從我一開始思路理解開始,這個時候我覺得這2個的功能用處都是在代碼出現異常情況的時候對其進行處理,且向調用者(或者就是用戶)返回一個友好的提示,那這2個有啥區別呢,重點來了……

  業務場景一:某個字段必須保證唯一,例如:不允許存在同一個name的數據,這是大家開發過程中很常見的了,調用新增接口的時候你需要先查一遍該數據在庫里是否存在,如果存在就返回“該數據已存在”,並且不再執行后面的插入動作。到此時我個人覺得try catch 和全局異常處理達到的效果是一樣的。

  業務場景二:某個字段是需要提示用戶“該數據已存在”,但是但是但是……我也允許你新增一個同樣的數據,我就只是單純要提示一下你而已,並不阻止你繼續插入這條數據。這個時候有木有突然覺得就不一樣了,如果是全局異常處理的話,提示你“該數據已存在”之后就不運行后面的插入代碼了,而try catch是可以在拋出異常信息“該數據已存在”的時候進入catch代碼塊執行插入操作的。

  就是不要認為在有全局異常處理之后,try catch就沒用了。不知道我這樣算不算牽強的解釋

 

圖1(使用只全局異常的情況下,無法執行到else子句內的insert操作)

 

 

圖二(在拋出異常之后,進入catch子句仍然執行insert動作)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM