Java異常處理教學
異常是在沒有定義正常執行路徑時在Java程序的執行期間可能出現的條件。Java通過將執行操作的代碼與處理錯誤的代碼分離來處理錯誤。
當發生異常時,Java會創建一個包含有關異常的所有信息的對象,並將其傳遞給相應的異常處理代碼。有關異常的信息包括異常的類型,發生異常的代碼中的行號等。
try-catch塊
要處理異常,請將代碼放在try
塊中。 try
塊如下所示:
try {
// Code for the try block
// 可能有異常的代碼
}
try
塊以關鍵字try
開頭,後面是開括號和結束括號。try
塊的代碼放在開口和關閉大括號內。try
塊本身不能使用。
它必須後跟一個或多個catch
塊,或一個finally
塊,或兩者的組合。要處理可能在try
塊中拋出的異常,請使用catch
塊。一個catch
塊可以用於處理多種類型的異常。catch
塊的語法與方法的語法相似。
catch (ExceptionClassName parameterName) {
// Exception handling code
}
catch
塊的聲明就像一個方法聲明。它從關鍵字catch
開始,後面跟一對括號。在括號中,它聲明瞭一個參數。
參數類型是應該捕獲的異常類的名稱。parameterName
是用戶給定的名稱。括號後面是開口括號和結束括號。異常處理代碼放在大括號中。當拋出異常時,異常對象的引用將複製到parameterName
。可以使用parameterName
從異常對象中獲取信息。將一個或多個catch
塊與try
塊關聯。try-catch
塊的一般語法如下。
try {
// Your code that may throw an exception
}
catch (ExceptionClass1 e1){
// Handle exception of ExceptionClass1 type
}
catch (ExceptionClass2 e2){
// Handle exception of ExceptionClass2 type
}
catch (ExceptionClass3 e3){
// Handle exception of ExceptionClass3 type
}
示例
下面的代碼顯示瞭如何處理除零異常。
public class Main {
public static void main(String[] args) {
int x = 10, y = 0, z;
try {
z = x / y;
System.out.println("z = " + z);
} catch (ArithmeticException e) {
String msg = e.getMessage();
e.printStackTrace();
System.out.println("The error is: " + msg);
}
System.out.println("The end.");
}
}
上面的代碼生成以下結果。
java.lang.ArithmeticException: / by zero
at Main.main(Main.java:5)
The error is: / by zero
The end.