繁体   English   中英

ClassNotFoundException存储自己的cause副本

[英]ClassNotFoundException stores own copy of cause

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

private Throwable ex;

我只是没有看到它的任何一点 - 它完全类似于Throwable类中声明的字段。

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

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

cause被添加到JDK 1.4中的 Throwable中; 它没有出现在1.3中

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM