[英]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()
覆蓋SubClass
的clone()
方法時,顯示編譯錯誤
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
不會顯示任何錯誤。
我的理解力在哪里?
如果SuperClass
的clone
捕獲到CloneNotSupportedException
並且沒有拋出該異常,則SubClass
不必捕獲它,因為SubClass
的try clone()
的try塊永遠不會拋出它。
當您從SuperClass
刪除clone()
時, SubClass
現在將調用Object
的clone()
,它具有throws CloneNotSupportedException
子句。 因此,您必須捕獲該異常(或向您的方法添加一個throws CloneNotSupportedException
的throws CloneNotSupportedException
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.