Java 忽略異常
在計算機程式設計中,在軟體測試過程中,我們不可能涵蓋每一個輸入;相反,我們測試軟體的一些通用場景、單元和條件路徑。但是,在某些情況下,你無法防止發生執行時錯誤並被終止,除非你使用了適當的異常處理機制。
但是多虧了 Java 程式設計,它提供了異常處理等概念,你可以防止執行時錯誤並在終止或崩潰程式之前處理它們。
Java 中的異常處理
異常處理是一種幫助開發人員在終止程式之前處理錯誤的技術。它用於處理程式中可能導致錯誤的異常情況,以維持程式的正常流程。
但是,它仍然需要開發人員和測試人員的技能,即他們如何專業和高效地使用異常處理技術來忽略 Java 中的異常。
我們可以使用特殊的關鍵字來處理 Java 中的異常:try
、catch
、finally
、throws
和 throw
。
假設我們有一個將兩個數字相除的小程式。
package codes;
public class Codes {
public static void main(String[] args) {
System.out.println(12/2);
System.out.println(12/1);
System.out.println(12/0);
System.out.println("This is the line after the exception");
}
}
輸出:
6
12
Exception in thread "main" java.lang.ArithmeticException: / by zero
at codes.Codes.main(Codes.java:10)
在上面的例子中,12 先除以 2、1,然後是 3。前兩個數字 2 和 1 已經平滑地除掉了數字 12,沒有產生任何錯誤,但是最後一位數字 0 卻導致了異常,程式異常終止。
原因是我們不能用 0 來除任何數字,所以編譯器丟擲了一個執行時錯誤並終止了程式。如你所見,由於異常終止,程式的最後一行沒有執行。
忽略 Java 中的異常
正如我們在上面的例子中看到的,我們通過將一個數字除以 0 得到了一個 ArithmeticException
。但是在 Java 中有一些方法可以忽略這些異常或異常情況。
我們再來看看上面的例子,儘量忽略異常,保持程式的正常流程。
package codes;
public class Codes {
public static void main(String[] args) {
try{
System.out.println(12/2);
System.out.println(12/1);
System.out.println(12/0);
}
catch (ArithmeticException e) {
System.out.println ("Division by Zero() isn't a valid expression\n"
+ "The type of this exception is " + e);
}
System.out.println("This is the line after the exception");
}
}
輸出:
6
12
Division by Zero() isn't a valid expression
The type of this exception is java.lang.ArithmeticException: / by zero
This is the line after the exception
在這個程式中,我們使用 try-catch
塊來忽略 Java 程式中的異常。基本上,在 try
塊中,我們有可能導致執行時錯誤的程式碼,如果在 try
塊中發現任何異常,則 catch
塊用於顯示任何要解釋的自定義訊息例外。
在這種情況下,前兩條語句執行順利,第三條語句導致由 try-catch
處理的異常,並列印最後一行程式碼。
Java 異常的常見示例
在 Java 中,我們有不同的異常型別;每個人都對場景或條件負責。以下是一些最常見的例外情況。
ClassNotFoundException
NoSuchMethodException
NullPointerException
ArrayIndexOutOfBoundsException
IllegalStateException
ArithmeticException
FileNotFoundException
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn