一、問題
????在實際開發(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ā)生在編譯檢查時期的,所以一般編輯器會強制你對異常做處理。

三、異常處理方法
? ? ? ? 上面簡單介紹了異常的類型,但是在實際開發(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博客