Springboot全局異常捕獲及try catch區(qū)別解析
今天在碼代碼的時候突然想到這個問題,覺得有點(diǎn)困惑。在網(wǎng)上也翻閱不少帖子其中有一個帖子給了我一個思路,其實(shí)也是解釋了基礎(chǔ)概念。
概念一:try catch 語句在try里面捕獲到異常之后會進(jìn)入catch子句內(nèi),執(zhí)行catch內(nèi)的代碼。
概念二:springboot中的全局異常處理在捕獲到異常之后,異常代碼之后的語句是不會再運(yùn)行了的
那么從我一開始思路理解開始,這個時候我覺得這2個的功能用處都是在代碼出現(xiàn)異常情況的時候?qū)ζ溥M(jìn)行處理,且向調(diào)用者(或者就是用戶)返回一個友好的提示,那這2個有啥區(qū)別呢,重點(diǎn)來了……
業(yè)務(wù)場景一:某個字段必須保證唯一,例如:不允許存在同一個name的數(shù)據(jù),這是大家開發(fā)過程中很常見的了,調(diào)用新增接口的時候你需要先查一遍該數(shù)據(jù)在庫里是否存在,如果存在就返回“該數(shù)據(jù)已存在”,并且不再執(zhí)行后面的插入動作。到此時我個人覺得try catch 和全局異常處理達(dá)到的效果是一樣的。
業(yè)務(wù)場景二:某個字段是需要提示用戶“該數(shù)據(jù)已存在”,但是但是但是……我也允許你新增一個同樣的數(shù)據(jù),我就只是單純要提示一下你而已,并不阻止你繼續(xù)插入這條數(shù)據(jù)。這個時候有木有突然覺得就不一樣了,如果是全局異常處理的話,提示你“該數(shù)據(jù)已存在”之后就不運(yùn)行后面的插入代碼了,而try catch是可以在拋出異常信息“該數(shù)據(jù)已存在”的時候進(jìn)入catch代碼塊執(zhí)行插入操作的。
就是不要認(rèn)為在有全局異常處理之后,try catch就沒用了。不知道我這樣算不算牽強(qiáng)的解釋
圖一(使用只全局異常的情況下,無法執(zhí)行到else子句內(nèi)的insert操作)

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java的Hibernate框架中Criteria查詢使用的實(shí)例講解
這篇文章主要介紹了Java的Hibernate框架中Criteria查詢使用的實(shí)例講解,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2016-01-01
Java SpringBoot集成ChatGPT實(shí)現(xiàn)AI聊天
ChatGPT已經(jīng)組件放開了,現(xiàn)在都可以基于它寫插件了,也許可以用它結(jié)合文字語音開發(fā)一個老人小孩需要的智能的說話陪伴啥的,這篇文章就介紹SpringBoot結(jié)合ChatGPT實(shí)現(xiàn)AI聊天感興趣的同學(xué)可以借鑒一下2023-04-04
SpringBoot 使用 OpenAPI3 規(guī)范整合 knife4j的詳細(xì)過程
Swagger工具集使用OpenAPI規(guī)范,可以生成、展示和測試基于OpenAPI規(guī)范的API文檔,并提供了生成客戶端代碼的功能,本文給大家介紹SpringBoot使用OpenAPI3規(guī)范整合knife4j的詳細(xì)過程,感興趣的朋友跟隨小編一起看看吧2023-12-12

