本篇內(nèi)容介紹了“Java異常體系知識(shí)點(diǎn)有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括平城網(wǎng)站建設(shè)、平城網(wǎng)站制作、平城網(wǎng)頁制作以及平城網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,平城網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到平城省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
優(yōu)秀的程序代碼,都在追求高效,安全,和低錯(cuò)誤率,但是程序中的異常是無法避免的,降低異常出現(xiàn)的頻率是關(guān)鍵,異常出現(xiàn)如何處理是另一個(gè)重要方面,Java體系中異常框架對(duì)于系統(tǒng)開發(fā)是十分重要的。
面對(duì)系統(tǒng)異常時(shí),不要慌亂,異常雖然是錯(cuò)誤,也是系統(tǒng)發(fā)出的消息,標(biāo)識(shí)系統(tǒng)的缺陷和需要改進(jìn)的地方。
Java的API中已經(jīng)定義許多異常類,分為兩大類,錯(cuò)誤Error和異常Exception,Throwable作為所有異常的超類,如圖:
Error:一般為底層的不可恢復(fù)的類,一般此類錯(cuò)誤都比較嚴(yán)重,JVM將終止其運(yùn)行的線程;
VirtualMachineError:虛擬機(jī)運(yùn)行錯(cuò)誤;
OutOfMemoryError:內(nèi)存溢出;
Exception:程序本身可以捕獲并且可以預(yù)處理的異常,例如捕獲或者拋出;
RuntimeException:運(yùn)行時(shí)異常;
CheckException:已檢查異常,編譯階段必須處理;
幾個(gè)經(jīng)典的常見的RunTimeException如下:空指針NullPointerException;數(shù)組下標(biāo)越界ArrayIndexoutofBoundsException等。
Java異常處理關(guān)鍵字,分別是:try、catch、finally、throw、throws。
應(yīng)該在合適的位置處理異常,異常的處理準(zhǔn)則如下:誰知情誰處理,誰負(fù)責(zé)誰處理,誰導(dǎo)致誰處理。
即異常在當(dāng)前流程下不處理,一種是直接通過方法傳遞給調(diào)用者,throws關(guān)鍵字是用于在方法聲明上聲明拋出異常類型的,并且一次可以聲明拋出多種類型的異常。throw關(guān)鍵字是用于方法的內(nèi)部拋出一個(gè)異常對(duì)象,常在業(yè)務(wù)校驗(yàn)時(shí)拋出提示。
需要特別說明的一點(diǎn),在Spring框架中,事務(wù)觸發(fā)多數(shù)是以是否拋出異常為標(biāo)識(shí)來處理的,如果方法在事務(wù)控制內(nèi),方法內(nèi)異常捕獲但是最終沒有拋出,那該事務(wù)則無效。
通常捕獲異常會(huì)使用try-catch-finally關(guān)鍵字三連操作:
Try嘗試捕獲異常:
如果語句依次執(zhí)行結(jié)束,則跳過catch,在存在finally代碼塊時(shí),則執(zhí)行否則執(zhí)行后續(xù)流程;
如果捕獲異常,則匹配catch中的類型,如果沒有與之匹配的catch類型,則該異常交給JVM處理,finally代碼會(huì)被執(zhí)行,流程之后的代碼不會(huì)被執(zhí)行;
如果捕獲異常且存在相匹配的catch類型,則跳到catch代碼塊執(zhí)行,finally代碼會(huì)被執(zhí)行,執(zhí)行完finally代碼塊之后繼續(xù)執(zhí)行后續(xù)代碼;
Catch匹配可能出現(xiàn)的異常類型,并在其中做補(bǔ)償處理,例如出現(xiàn)異常情況,需要更新一個(gè)異常狀態(tài)等,如果沒有catch塊,后必須跟finally塊,處理資源釋放;
Finally無論是否捕獲異常,finally代碼會(huì)被執(zhí)行,也是面試中常見的異常問題之一,例如在finally代碼塊return,或者修改返回值等,主要涉及到值傳遞和引用傳遞方面。
復(fù)雜的業(yè)務(wù)系統(tǒng)必備功能,異常日志體系,用來分析運(yùn)行問題,作為系統(tǒng)不斷優(yōu)化的核心依據(jù),通常會(huì)記錄如下幾塊:
異常類型:分析異常發(fā)生的關(guān)鍵原因;
異常信息:通常會(huì)簡(jiǎn)單記錄e.getMsg輸出的內(nèi)容;
異常位置:快速定位異常發(fā)生的位置[類.方法];
業(yè)務(wù)參數(shù):特定業(yè)務(wù)參數(shù)場(chǎng)景才能復(fù)現(xiàn)的問題;
時(shí)間節(jié)點(diǎn):有的并發(fā)問題是在特定時(shí)間段出現(xiàn);
異常日志記錄下來之后,還會(huì)定期進(jìn)行任務(wù)分析,不斷發(fā)現(xiàn)系統(tǒng)容易出問題的地方,然后再不斷的改進(jìn)和優(yōu)化。
在微服務(wù)架構(gòu)系統(tǒng)下,某個(gè)服務(wù)故障或者異常,觸發(fā)熔斷該服務(wù),避免引發(fā)整個(gè)微服務(wù)鏈路異常,防止整個(gè)系統(tǒng)服務(wù)的雪崩。以此緩解服務(wù)器資源的的壓力,以保證核心業(yè)務(wù)的正常運(yùn)行。
“Java異常體系知識(shí)點(diǎn)有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
名稱欄目:Java異常體系知識(shí)點(diǎn)有哪些
分享鏈接:http://www.chinadenli.net/article2/pgesic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、品牌網(wǎng)站建設(shè)、建站公司、網(wǎng)站內(nèi)鏈、網(wǎng)頁設(shè)計(jì)公司、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)