/*
異常的注意事項:
1,子類在覆蓋父類方法時,父類的方法如果拋出了異常,那么子類的方法只能拋出父類的異常或者該異常的子類。
2,如果父類拋出多個異常,那么子類只能拋出父類異常的子集。
簡單說:子類覆蓋父類,只能拋出父類的異常或者子類或者子集。注意:如果父類的方法沒有拋出異常,那么子類覆蓋時絕對不能拋。子類不能拋出比父類多的異常。就只能try。。。catch
*/
class A extends Exception{A(String msg){super(msg);}
}class B extends A{B(String msg){super(msg);}
}class C extends Exception{C(String msg){super(msg);}
}/*
Exception---A---B---C
*/class Parent{void show() throws A{throw new A("拋出A異常!");}
}class Child extends Parent{void show() throws B{throw new B("拋出B異常!");}
}public class PC{public static void main(String[] args){new PC().methods(new Parent());}static void methods(Parent p){//如果參數是Parent 的子類,也就是多態時,子類中拋出了父類沒有的異常類型,//下面的代碼那就不能被處理了!try{p.show();}catch(A e){System.out.println("處理完異常!");}}
}