標籤:異常 java
異常,什麼是異常?簡單的說異常是一種處理機制。將使用者所沒有考慮到的錯誤進行處理。因為程式員無法保證一段代碼永遠不會出錯。
java中異常通過5個關鍵字:try , catch , throw , throws , finally。其中,try關鍵字後緊跟一個花括弧括起來的代碼塊(花括弧不可省略)簡稱try塊。它裡面放置可能引發異常的代碼。catch後對應異常類型和一個代碼塊,用於表明該catch塊用於處理這種類型的代碼塊。多個catch塊後還可以緊跟一個finally塊,finally塊用於回收在try塊裡開啟的實體資源,異常機制會保證finally塊總被執行。throw關鍵字主要在方法簽名中使用,用於聲明該方法可能拋出的異常,而throw用於拋出一個實際的異常,throw可以單獨作為語句使用,拋出一個具體異常對象。
try{ 若執行代碼出現異常 } catch(Exception e){異常處理部分} 異常處理完後,程式繼續執行。catch()括弧中為捕捉到的異常。異常類型不知道就寫Exception。e.printStackTrace() 簡單理解為列印異常資訊。
*一段代碼不能連著拋2個異常,因為第二個無法拋出,即使第二個拋出了,也是在第一個解決了的情況下。
*無法用邏輯判斷的用異常方便。(異常的意義)
異常的處理方式有2種。①try{}catch(){}自己處理異常。②在方法後加throws 交給java虛擬機器處理。
異常處理步驟:try{} catch(1){} catch(2){} ... finally{} 無論是否捕獲異常,finally都會去執行。finally對所有異常進行統一的管理。一般finally是對記憶體回收等機制的管理。
異常分類:①、Error 系統錯誤。 ②、Exception 必須處理的異常。 ③、RuntimeException 可處理,也可不處理的異常。
自訂異常,throws new。。。 並繼承Exception。
void f() throws A
{
}
*throws A表示調用f方法時,f方法可能會拋出A類異常,建議您調用f方法時最好對f方法可能拋出的A類異常進行捕捉。
*throws A不表示f方法一定會拋出A類異常,f方法可以不拋出異常。
*throws A不表示調用f方法時,必須對A類異常進行捕捉。假設A是RuntimeException子類異常,由於RuntimeException的子類異常可處理也可不處理,所以編譯器允許調用f方法時,對f方法拋出的RuntimeException子類異常不進行處理。(但是,強烈建議,對throws出的所有異常進行處理,如果一個方法內部已經對A異常進行了處理,就不要在throws A了)
*先catch子類異常再catch父類異常
*catch與catch之間不能有其他代碼。
*重寫方法拋出異常範圍不能大於被重寫方法排除的異常範圍。
異常的優點:①、強製程序員考慮程式的安全性和可控性。
②、有利於代碼調試。
③、把錯誤處理代碼從常規代碼中分離出來。
java學習------異常