packageexceptions;//: exceptions/ExtraFeatures.java//Further embellishment of exception classes.
import static net.mindview.util.Print.*;class MyException2 extendsException {private intx;publicMyException2() {}public MyException2(String msg) { super(msg); }public MyException2(String msg, intx) {super(msg);this.x =x;
}public int val() { returnx; }public String getMessage() { //相当于toString()方法
return "Detail Message: "+ x + " "+ super.getMessage();
}
}public classExtraFeatures {public static void f() throwsMyException2 {
print("Throwing MyException2 from f()");throw newMyException2();
}public static void g() throwsMyException2 {
print("Throwing MyException2 from g()");throw new MyException2("Originated in g()");
}public static void h() throwsMyException2 {
print("Throwing MyException2 from h()");throw new MyException2("Originated in h()", 47);
}public static voidmain(String[] args) {try{
f();
}catch(MyException2 e) {
e.printStackTrace(System.out);
}try{
g();
}catch(MyException2 e) {
e.printStackTrace(System.out);
}try{
h();
}catch(MyException2 e) {
e.printStackTrace(System.out);
System.out.println("e.val() = " +e.val());
}
}
}/*Output:
Throwing MyException2 from f()
MyException2: Detail Message: 0 null
at ExtraFeatures.f(ExtraFeatures.java:22)
at ExtraFeatures.main(ExtraFeatures.java:34)
Throwing MyException2 from g()
MyException2: Detail Message: 0 Originated in g()
at ExtraFeatures.g(ExtraFeatures.java:26)
at ExtraFeatures.main(ExtraFeatures.java:39)
Throwing MyException2 from h()
MyException2: Detail Message: 47 Originated in h()
at ExtraFeatures.h(ExtraFeatures.java:30)
at ExtraFeatures.main(ExtraFeatures.java:44)
e.val() = 47*///:~