【问题标题】:ClassNotFoundException stores own copy of causeClassNotFoundException 存储自己的原因副本
【发布时间】:2013-01-22 18:51:26
【问题描述】:

我有 Oracle 的 Java 实现 (1.6.0_37),我对 ClassNotFoundException 源代码感兴趣。如果你查看它,你会看到这个类存储了它自己的原因副本:

private Throwable ex;

我只是看不出有任何意义——它与Throwable 类中声明的字段完全相似。

谁能解释一下为什么 Java 类库开发人员决定这样做?

【问题讨论】:

    标签: java classnotfoundexception standard-library


    【解决方案1】:

    可能是因为没有人想删除它。

    cause 被添加到JDK 1.4 中的Throwable;它不在1.3 中。

    但是,ClassNotFoundException1.3 版本确实有原因,因为当静态初始化程序失败时(实际上,由于任何加载问题),可能会发生此异常,并且在不知道原因的情况下进行调试可能会非常令人沮丧。

    【讨论】:

      【解决方案2】:

      他们可能希望向后兼容使用旧 Java 版本序列化的异常对象。 保留字段似乎比维护自定义 writeObject/readObject 方法更简单。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-26
        • 1970-01-01
        • 2021-11-25
        • 2022-07-21
        • 1970-01-01
        • 2021-07-16
        相关资源
        最近更新 更多