範例示範繼承 Exception 建立自訂異常類別 MyException,提供三種建構子(無參、訊息、訊息+代碼),並在 DemoException 中透過 try-catch 捕獲處理。
class MyException extends Exception {
public MyException() {}
public MyException(String msg) { super(msg); }
public MyException(String msg, int x) { super(msg); i = x; }
public int val() { return i; }
private int i;
}
public class DemoException {
public static void a() throws MyException {
System.out.println("Throwing MyException from a()");
throw new MyException();
}
public static void b() throws MyException {
System.out.println("Throwing MyException from b()");
throw new MyException("Originated in b()");
}
public static void c() throws MyException {
System.out.println("Throwing MyException from c()");
throw new MyException("Originated in c()", 47);
}
public static void main(String[] args) {
try { a(); } catch (MyException e) { e.getMessage(); }
try { b(); } catch (MyException e) { e.toString(); }
try { c(); } catch (MyException e) {
e.printStackTrace();
System.out.println("error code: " + e.val());
}
}
}
執行結果展示三種建構子的異常拋出與捕獲處理方式:getMessage()、toString()、printStackTrace() 及自訂 val() 取得錯誤代碼。