java - "A derived-class constructor cannot catch exceptions thrown by its base-class constructor."但能够捕获它

标签 java exception

下面的语句来自java的思考,“派生类构造函数无法捕获其基类构造函数抛出的异常。”但我能够捕获它。谁能解释一下我哪里出错了?

class Base {
    Base() throws CloneNotSupportedException {
        throw new CloneNotSupportedException();
    }
}

class Derived extends Base {

    Derived() throws CloneNotSupportedException, RuntimeException {}

    public static void main(String[] args) {
        try {
            Derived d = new Derived();
        }
        catch(CloneNotSupportedException e) {
            e.printStackTrace();
        }
        catch(RuntimeException re){}
    }
}

输出:

    java.lang.CloneNotSupportedException
    at Base.<init>(Coffee.java:4)
    at Derived.<init>(Coffee.java:9)
    at Derived.main(Coffee.java:14)

最佳答案

您没有在派生类的构造函数中捕获任何内容。您可以在 main 方法中捕获异常。因此,您并不与您发布的引文相矛盾。

关于java - "A derived-class constructor cannot catch exceptions thrown by its base-class constructor."但能够捕获它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25698681/

相关文章:

java - 使用 JFree Chart API 生成饼图部分标签的 URL

java.util.Locale 返回它构建时使用的不同语言

java - 抛出异常是否是处理 Java 反射 API 中抛出的所有异常的好方法?

java - com.sun.proxy.$Proxy1 无法转换为

java - 如何编写不等于某物的匹配器

javascript - 强大的 Javascript 异常处理

c# - 是否可以拦截第三方应用程序的 WIN32 异常?

java - 处理 lambda 中的检查异常

entity-framework - Entity Framework (v6)在异常后关闭连接而不使用 using 语句?里面的实验结果

java - 如何将 JTextField 组件保存在 .txt 文件中? (使用 Netbeans GUI)