Springboot全局異常捕獲及try catch區(qū)別解析
今天在碼代碼的時(shí)候突然想到這個(gè)問(wèn)題,覺(jué)得有點(diǎn)困惑。在網(wǎng)上也翻閱不少帖子其中有一個(gè)帖子給了我一個(gè)思路,其實(shí)也是解釋了基礎(chǔ)概念。
概念一:try catch 語(yǔ)句在try里面捕獲到異常之后會(huì)進(jìn)入catch子句內(nèi),執(zhí)行catch內(nèi)的代碼。
概念二:springboot中的全局異常處理在捕獲到異常之后,異常代碼之后的語(yǔ)句是不會(huì)再運(yùn)行了的
那么從我一開(kāi)始思路理解開(kāi)始,這個(gè)時(shí)候我覺(jué)得這2個(gè)的功能用處都是在代碼出現(xiàn)異常情況的時(shí)候?qū)ζ溥M(jìn)行處理,且向調(diào)用者(或者就是用戶)返回一個(gè)友好的提示,那這2個(gè)有啥區(qū)別呢,重點(diǎn)來(lái)了……
業(yè)務(wù)場(chǎng)景一:某個(gè)字段必須保證唯一,例如:不允許存在同一個(gè)name的數(shù)據(jù),這是大家開(kāi)發(fā)過(guò)程中很常見(jiàn)的了,調(diào)用新增接口的時(shí)候你需要先查一遍該數(shù)據(jù)在庫(kù)里是否存在,如果存在就返回“該數(shù)據(jù)已存在”,并且不再執(zhí)行后面的插入動(dòng)作。到此時(shí)我個(gè)人覺(jué)得try catch 和全局異常處理達(dá)到的效果是一樣的。
業(yè)務(wù)場(chǎng)景二:某個(gè)字段是需要提示用戶“該數(shù)據(jù)已存在”,但是但是但是……我也允許你新增一個(gè)同樣的數(shù)據(jù),我就只是單純要提示一下你而已,并不阻止你繼續(xù)插入這條數(shù)據(jù)。這個(gè)時(shí)候有木有突然覺(jué)得就不一樣了,如果是全局異常處理的話,提示你“該數(shù)據(jù)已存在”之后就不運(yùn)行后面的插入代碼了,而try catch是可以在拋出異常信息“該數(shù)據(jù)已存在”的時(shí)候進(jìn)入catch代碼塊執(zhí)行插入操作的。
就是不要認(rèn)為在有全局異常處理之后,try catch就沒(méi)用了。不知道我這樣算不算牽強(qiáng)的解釋
圖一(使用只全局異常的情況下,無(wú)法執(zhí)行到else子句內(nèi)的insert操作)
圖二(在拋出異常之后,進(jìn)入catch子句仍然執(zhí)行insert動(dòng)作)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解hashCode()和equals()的本質(zhì)區(qū)別和聯(lián)系
這篇文章主要介紹了詳解hashCode()和equals()的本質(zhì)區(qū)別和聯(lián)系,本文先對(duì)兩種方法作了介紹,然后對(duì)二者聯(lián)系進(jìn)行分析,具有一定參考價(jià)值,需要的朋友可以了解下。2017-09-09Mybatis-Plus動(dòng)態(tài)表名的實(shí)現(xiàn)示例
面對(duì)復(fù)雜多變的業(yè)務(wù)需求,動(dòng)態(tài)表名的處理變得愈發(fā)重要,本文主要介紹了Mybatis-Plus動(dòng)態(tài)表名的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07SpringCloud超詳細(xì)講解負(fù)載均衡組件Ribbon源碼
在微服務(wù)中,對(duì)服務(wù)進(jìn)行拆分之后,必然會(huì)帶來(lái)微服務(wù)之間的通信需求,而每個(gè)微服務(wù)為了保證高可用性,又會(huì)去部署集群,那么面對(duì)一個(gè)集群微服務(wù)進(jìn)行通信的時(shí)候,如何進(jìn)行負(fù)載均衡也是必然需要考慮的問(wèn)題2022-07-07springboot啟動(dòng)時(shí)如何指定spring.profiles.active
這篇文章主要介紹了springboot啟動(dòng)時(shí)如何指定spring.profiles.active問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04詳解Nacos中注冊(cè)中心和配置中心的實(shí)現(xiàn)
Spring?Cloud?Alibaba?是阿里巴巴提供的一站式微服務(wù)開(kāi)發(fā)解決方案。而?Nacos?作為?Spring?Cloud?Alibaba?的核心組件之一,提供了兩個(gè)非常重要的功能:注冊(cè)中心和配置中心,我們今天來(lái)了解和實(shí)現(xiàn)一下二者2022-08-08Java Vector和ArrayList的異同分析及實(shí)例講解
在本篇文章里小編給大家整理的是一篇關(guān)于Java Vector和ArrayList的異同分析及實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。2021-01-01Java @Value("${xxx}")取properties時(shí)中文亂碼的解決
這篇文章主要介紹了Java @Value("${xxx}")取properties時(shí)中文亂碼的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07