在前面的單元中我們學會了各種資料結構與陣列。但在實際寫程式時,常常會遇到一些預料之外的狀況(例如:使用者不小心輸入了文字而不是數字、或者陣列讀取超過範圍)。如果沒有做好防護,程式就會直接崩潰終止。這篇要來學習 Java 非常重要的防護機制:例外處理 (Exception Handling - try-catch)。
try {
// 1. 把「可能會有風險、會出錯」的程式碼放這裡
} catch (Exception e) {
// 2. 當 try 裡面的程式碼真的出錯時,程式會被攔截並跳到這裡執行
// 可以在這裡印出錯誤訊息或做補救措施
}
public class TryCatchTest {
public static void main(String[] args) {
int a = 10;
int b = 0; // 故意設為 0
try {
// 這行會發生數學錯誤 (ArithmeticException: / by zero)
int result = a / b;
System.out.println("計算結果:" + result);
} catch (Exception e) {
// 當錯誤發生時,程式不會崩潰,而是執行這裡的程式碼
System.out.println("發生錯誤了!不能除以零喔!");
// e.getMessage() 可以印出詳細的錯誤原因
System.out.println("錯誤原因:" + e.getMessage());
}
System.out.println("程式安全執行結束,沒有當機!");
}
}
*ArithmeticException:數學運算錯誤(例如除以零)。
*ArrayIndexOutOfBoundsException:陣列索引超出範圍。
*NumberFormatException:字串轉數字格式錯誤(例如把 "abc" 轉成整數)。
*也可以直接用萬用型態 Exception e 來捕捉所有類型的例外。