Java15-1 覆蓋中異常的使用

先看代碼

/*Exception
--|AException
----|AAexception
--|BEception*/
class AException extends Exception{
    public AException(String message) {
        super(message);
    }
}
class AAException extends AException {
    public AAException(String message) {
        super(message);
    }
}
class BException extends Exception {
    public BException(String message) {
        super(message);
    }
}
class Fu{
     void Show()throws AException{
         System.out.println("Fu show");
     }
}
class Zi extends Fu{
         void Show()throws AAException{
             System.out.println("zi show");
         }
}
class Tool{
    public  void Method(Fu fu)  {
       try {
           fu.Show();
       }
       catch (AException e){//無論拋出Aexception還是AAEception只要輸入AException就能被捕獲
           System.out.println(0);
       }
    }
}
public class TestExceptionDemo{
    public static void main(String[] args) {
        Tool tool=new Tool();
        tool.Method(new Zi());
    }
}

覆蓋時,子類方法覆蓋父類方法,只能拋出父類方法異?;蛘咴摦惓5淖宇?br> 如果父類方法拋出多個異常,子類只能拋出父類異常的子集 (子類異常必須在父類異常的處理中)子類不能比父類拋新的異常
父類已經(jīng)有問題,子類不能比父類還有問題
有一種情況只能try 不能throws聲明
被覆蓋的方法沒有拋出異常,子類在覆蓋時,子類方法中發(fā)生了異常 只能try不能聲明出去

interface Inter{
    void Show(); //沒有方法體時,方法不拋出異常
}
class D1 implements Inter{
   public void Show(){
        try {//子類不能比父類更有問題所以不能拋出
            throw new Exception();
        }
        catch (Exception e){//將編譯檢測異常轉(zhuǎn)換為運行時異常,讓程序停掉
            throw new RuntimeException();//這個異常不用聲明
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容