标签: java classnotfoundexception standard-library
我有Oracle的Java实现(1.6.0_37),我对ClassNotFoundException源代码很感兴趣。如果您查看它,您将看到此类存储它自己的原因副本:
ClassNotFoundException
private Throwable ex;
我只是没有看到任何意义 - 它与Throwable类中声明的字段完全相似。
Throwable
有没有人可以解释一下为什么Java类库开发人员决定这样做?
答案 0 :(得分:2)
可能是因为没有人想过要删除它。
cause已添加到JDK 1.4中的Throwable; 1.3没有出现。
cause
然而,ClassNotFoundException版本的{{1}}确实有原因,因为当静态初始化程序失败(实际上,由于任何加载问题)时会发生此异常,并且在不知道原因的情况下进行调试非常令人沮丧。
答案 1 :(得分:1)
可能他们希望向后兼容使用旧Java版本序列化的异常对象。 保持该字段似乎比维护自定义writeObject / readObject方法更简单。