繁体   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