常見的 Java Exception 舉例
1️⃣ NullPointerException
發生原因:程式嘗試使用一個尚未初始化的物件
範例:
String text;
System.out.println(text.length());
錯誤訊息:Exception in thread "main" java.lang.NullPointerException
解法:先初始化物件
String text = "";
System.out.println(text.length());
2️⃣ ArrayIndexOutOfBoundsException
發生原因:存取陣列時索引超出範圍
範例:
int[] arr = {1, 2, 3};
System.out.println(arr[3]);
錯誤訊息:ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
解法:索引從 0 開始,正確範圍是 0~2
3️⃣ InputMismatchException
發生原因:Scanner 輸入型別與程式要求不符
範例:
Scanner sc = new Scanner(System.in);
int num = sc.nextInt(); // 輸入非整數
錯誤訊息:InputMismatchException
解法:輸入正確型別,或用 try-catch 處理錯誤
用ChatGPT幫你Debug
AI 的強項之一就是 解釋錯誤訊息。
你只要把錯誤訊息貼給ChatGPT,並附上程式碼,它就能幫你分析原因。
範例Prompt
我在Java程式裡遇到這個錯誤:
Exception in thread "main" java.lang.NullPointerException
程式碼如下:
String text;
System.out.println(text.length());
請幫我解釋原因並提供修改方法。
ChatGPT 可能回答:
你嘗試使用一個尚未初始化的字串變數text,所以出現 NullPointerException
解決方法:
1.初始化text,例如 String text = "";
2.或者在使用前確認 text != null
3.Debug的基本流程
讀懂錯誤訊息
Exception 名稱、行號、描述。
確認程式碼邏輯
哪裡可能是 null?哪裡索引超出範圍?
先嘗試自己修正
改變變數初始化、修正索引或輸入型別
必要時請 AI 幫忙
讓 AI 幫你解釋訊息、提供範例修正
小技巧
加上行號提示:把完整錯誤訊息與程式碼行號給AI,分析會更準確。
逐步測試:先測單行程式,找出哪一行出錯,再修正。
結合 try-catch:對可能出錯的程式段落加上例外處理,AI可以示範寫法。
try {
System.out.println(text.length());
} catch (NullPointerException e) {
System.out.println("文字尚未初始化!");
}