快速對照
| 關鍵字 | 位置 | 作用 | 後面接 |
throws | 方法宣告 | 宣告此方法可能拋出的異常類別 | 異常類別名(多個用逗號分隔) |
throw | 方法體內 | 主動拋出一個異常實例 | new ExceptionType("message") |
範例
public void readFile(String path) throws IOException { // 宣告
File f = new File(path);
if (!f.exists()) {
throw new FileNotFoundException("檔案不存在:" + path); // 拋出實例
}
// 讀取...
}
捕獲處理
try {
readFile("a.txt");
} catch (FileNotFoundException e) {
System.err.println(e.getMessage());
} catch (IOException e) {
e.printStackTrace();
}
自訂異常
class MyException extends Exception {
public MyException(String msg) { super(msg); }
}
void check(int age) throws MyException {
if (age < 0) throw new MyException("年齡不可為負");
}