Java一些異常處理方法和規(guī)范

一、問題

????在實際開發(fā)中會經(jīng)常遇到對異常的處理,但是在處理異常的時候具體有哪些方法和規(guī)范呢?

二、Java異常簡介

? ? ? ?Throwable類是所有異?;蝈e誤的超類,它有兩個子類:Error和Exception,分別表示錯誤和異常。Error 和 RuntimeException 以及他們的子類被稱為非檢查異常,除了Error 和 RuntimeException的其它異常被稱為檢查異常。由于Error錯誤值的是JVM運行時出現(xiàn)的異常,程序無法處理,這個異常出現(xiàn)一般會線程終止。我們需要研究的重點放在Exception上,出去Error后Exception又可分為運行時異常(RuntimeException)和非運行時異常。

? ? ? ? 運行時異常:RuntimeException 。程序在運行時期會出現(xiàn)的異常,如果異常不做處理會一直向上拋出,終止線程。

? ? ? ? 非運行時異常(編譯時異常、屬于非檢查異常):除RuntimeException 的其他Exception 的子類。顧名思義,這類異常是發(fā)生在編譯檢查時期的,所以一般編輯器會強制你對異常做處理。


Java異常類層次結(jié)構(gòu)圖

三、異常處理方法

? ? ? ? 上面簡單介紹了異常的類型,但是在實際開發(fā)中我們會遇到一個問題:怎樣的異常我需要向上拋出呢?怎樣的異常我需要抓住呢?在查閱大量文章之后我做了一下總結(jié):

????????首先說的是處理異常的方法:

? ? ? ? 1、恢復(fù)并繼續(xù):將異常捕捉,處理后恢復(fù)執(zhí)行。這就是編譯時異常出現(xiàn)的目的,處理方法就是捕捉異常并恢復(fù)繼續(xù)執(zhí)行程序。

? ? ? ? 2、向上傳播:將異常向上拋出,讓調(diào)用方處理該異常。說法太多,個人認為需要終止本方法可以拋出,知道上層方法可以捕捉處理,恢復(fù)執(zhí)行也可以拋出,使用比較靈活。

? ? ? ? 3、轉(zhuǎn)譯異常:轉(zhuǎn)譯即把低層邏輯的異常轉(zhuǎn)化成為高層邏輯的異常。對于本方法的異常對調(diào)用方來說比并不關(guān)心,調(diào)用方可能只需要知道調(diào)用的方法異常就可以,這個時候需要轉(zhuǎn)譯異常.

? ? ? ? 4、改拋為運行時異常:編譯異常出現(xiàn)的時候,你可能需要告訴調(diào)用方或者需要中斷程序,這個時候都可以拋運行時異常。

? ? ? ? 5、記錄并消耗異常:一些不嚴重的異常如果不需要處理,不會影響程序執(zhí)行,可以制作記錄并且消耗掉。


四、推薦文章????????

? ? 在查閱相關(guān)資料的時候發(fā)現(xiàn)了一篇特別好的文章,這里做個分享Java異常處理終結(jié)篇——如何進行Java異常處理設(shè)計 - CSDN博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容