Java(異常處理篇)

1、什麼是異常?

程序運行時,發生的不被期望的事件,它阻止了程序按照程序員的預期正常執行,這就是異常。

Java標準庫內建了一些通用的異常,這些類以Throwable爲頂層父類。Throwable派生出Error類和Exception類。

Error:Error類以及它的子類的實例,代表了JVM本身的錯誤。錯誤不能被程序員通過代碼處理,Error很少出現,一旦出現Error程序就掛了,最常見的就是OutOfMemoryError,StackOverFlowError,UnknownError。

Exception:Exception以及它的子類,代表程序運行時發生的各種不期望發生的事件。可以被Java異常處理機制使用,是異常處理的核心。

異常也可以分爲兩類:非檢查異常,檢查異常。

非檢查異常:Error和RuntimeException以及它們的子類。Javac在編譯時,不會提示和發現這樣的異常,不要求程序處理這些異常。如:ArithmeticException,ClassCastException,ArrayIndexException,NullPointException。

檢查異常:除了Error和RuntimeException的其他異常。javac強制要求程序員爲這樣的異常做預備處理工作(使用try...catch...finally或者throws)。如:SQLException,IOException,ClassNotFoundException。

對於檢查和非檢查是對於Javac來說的。

2、try,catch,finally,throw,throws介紹。

try後緊跟一個花括號括起來的代碼塊(花括號不可以省略),簡稱try塊。catch後對應異常類型和一個代碼塊,用於表明該catch塊用於處理這種類型的代碼塊。catch塊後可以跟finally塊,用於處理try塊打開的物理資源,異常機制會保證finally塊總被執行。throws關鍵字主要用在方法簽名上。throw可以作爲單獨語句使用,拋出一個具體的對象。

注意:

  • 不管程序代碼塊是否處於try塊中,甚至包括catch塊中的代碼,只要執行該代碼塊時出現異常,系統會自動生成一個異常對象。如果程序沒有爲這段代碼定義任何的catch塊,則Java運行環境無法找到處理該異常的catch塊,程序就在此退出。
  • try塊裏聲明的變量是代碼塊內的局部變量,它只在try塊內生效,在catch中不能訪問。
  • 在異常捕獲時,不僅應該把Exception類對應的catch塊放在最後,而且所有的父類異常catch塊都應該排在子類的異常catch塊的最後面(簡稱:先處理小異常,再處理大異常),否則將出現編譯錯誤。
  • 除非在try塊、catch塊中主動調用了退出虛擬機的方法,否則不管在try塊、catch塊中執行怎樣的代碼,出現怎樣的情況,異常處理finally塊總會被執行。
  • 通常在finally塊中不使用return或throw語句。將會導致try塊和catch塊中的return、throw語句失效。

 

3、異常處理規則

一般異常處理有四個目標:

  • 使程序代碼混亂最小。
  • 捕獲並保留診斷信息。
  • 通知適合的人員。
  • 採用合適的方式結束異常活動。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章