[英]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.