1. 程式人生 > >Java如何進行異常處理

Java如何進行異常處理

關鍵字:throws、throw、try、catch、finally的用法

Java通過面向物件的方法進行異常處理,把各種不同的異常進行分類,並提供了良好的介面。在Java中,每個異常都是一個物件,它是Throwable類或其子類的例項。當一個方法出現異常後便丟擲一個異常物件,該物件中包含有異常資訊,呼叫這個物件的方法可以捕獲到這個異常並可以對其進行處理。Java的異常處理是通過5個關鍵詞來實現的:try、catch、throw、throws和finally。一般情況下是用try來執行一段程式,如果系統會丟擲(throw)一個異常物件,可以通過它的型別來捕獲(catch)它,或通過總是執行程式碼塊(finally)來處理;try用來指定一塊預防所有異常的程式;catch子句緊跟在try塊後面,用來指定你想要捕獲的異常的型別;throw語句用來明確地丟擲一個異常;throws用來宣告一個方法可能丟擲的各種異常;finally為確保一段程式碼不管發生什麼異常狀況都要被執行;try語句可以巢狀,每當遇到一個try語句,異常的結構就會被放入異常棧中,直到所有的try語句都完成。如果下一級的try語句沒有對某種異常進行處理,異常棧就會執行出棧操作,直到遇到有處理這種異常的try語句或者最終將異常拋給JVM。

Error和Exception有什麼區別? 

  1. Error表示系統級的錯誤和程式不必處理的異常,是恢復不是不可能但很困難的情況下的一種嚴重問題;比如記憶體溢位,不可能指望程式能處理這樣的情況;
    1. 一般開發者不要自定義Error子類,因為它代表系統級別的錯誤。與一般的程式無關。
    2. 在Java異常處理機制中,Error不強制捕獲或宣告,也就是不強制處理。因為程式本身對此類錯誤無能為力。一般情況下我們只要把堆疊跟蹤資訊記錄下來就行。
  2. Exception表示需要捕捉或者需要程式進行處理的異常,是一種設計或實現問題;也就是說,它表示如果程式執行正常,從不會發生的情況。
    1. 在Java中,除了系統環境問題引起的異常,一般都繼承於Exception類。Exception分為RuntimeException和Checked Exception。對於Exception類,如果你建立了一個異常型別,直接繼承於Exception,那麼這個異常型別將屬於檢查異常(Checked Exception),Checked Exception必須要捕獲或宣告。而RuntimeException這種執行異常不強制。