Java中的異常處理是非常重要的,它可以讓程序在發生錯誤時有一個可控的流程,從而讓程序更加健壯。Java中的異常可以分為兩種,一種是運行時異常,另一種是非運行時異常。運行時異常是指程序運行時拋出的異常,比如數組下標越界、空指針引用等,這些異常在程序運行時可能會出現,需要程序員使用try-catch語句進行捕捉。非運行時異常是指程序編譯時就已經確定的異常,比如文件不存在、網絡中斷等,這些異常需要使用throws或throw語句進行拋出,由調用者進行處理。
public class MyException extends Exception { public MyException(String message) { super(message); } } public class Test { public static void main(String[] args) { try { throw new MyException("發生了自定義異常!"); } catch (MyException e) { System.out.println(e.getMessage()); } } }
上面的代碼演示了自定義一個異常類MyException,并在main函數中拋出并捕捉自定義異常。拋出異常時使用throw語句,捕捉異常時使用try-catch語句。catch語句中括號中的類型表示捕捉哪種類型的異常,如果捕捉到這種類型的異常,則執行catch塊中的代碼。如果不捕捉異常,則這個異常將會被傳遞到上一層級的方法或主函數中。
在Java中,還有一個finally語句用于定義無論是否發生異常都要執行的代碼,比如資源釋放。finally塊內的代碼會在try或catch塊中的代碼執行完畢后執行。
public class Test { public static void main(String[] args) { try { int num = 10 / 0; } catch (ArithmeticException e) { System.out.println("發生了被0除的異常!"); } finally { System.out.println("finally語句塊!"); } } }
上面的代碼演示了使用try-catch-finally語句塊處理異常。如果沒有try語句塊,finally塊也會被執行,如果有try語句塊,finally塊會在try塊或catch塊中代碼執行完畢后執行。finally塊可以用于釋放資源,比如關閉文件、數據庫連接等。