簡體   English   中英

出現子類編譯錯誤:CloneNotSupportedException的不可用捕獲塊

[英]At subclass Compilation Error: Unreachable catch block for CloneNotSupportedException

SuperClass ,當我重寫clone()方法時,就沒有問題。

public class SuperClass implements Serializable, Cloneable {
    public Object clone() {
        try {
            return super.clone();
        } catch (CloneNotSupportedException e) {
            return null;
        }
    }
}

當我通過完全相同的操作(從超類復制並粘貼 clone()方法clone()覆蓋SubClassclone()方法時,顯示編譯錯誤

public class SubClass extends SuperClass implements Serializable, Cloneable {
    public Object clone() {
        try {
            return super.clone();
        } catch (CloneNotSupportedException e) {
            return null;
        }
    }
}

SubClasss中包含catch的行的編譯錯誤:

CloneNotSupportedException的無法訪問的catch塊。 永遠不會從try語句主體中拋出此異常

同樣,如果我從SuperClass刪除方法clone() ,則SubClass不會顯示任何錯誤。

我的理解力在哪里?

如果SuperClassclone捕獲到CloneNotSupportedException並且沒有拋出該異常,則SubClass不必捕獲它,因為SubClass的try clone()的try塊永遠不會拋出它。

當您從SuperClass刪除clone()時, SubClass現在將調用Objectclone() ,它具有throws CloneNotSupportedException子句。 因此,您必須捕獲該異常(或向您的方法添加一個throws CloneNotSupportedExceptionthrows CloneNotSupportedException )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM