2013-01-22 46 views
1

我有Oracle的Java實現(1.6.0_37),我對ClassNotFoundException源代碼感興趣。如果你在看它,你會看到,這個類存儲它的原因的自己的副本:ClassNotFoundException存儲自己的原因副本

private Throwable ex; 

我只是沒有看到任何一點 - 它是完全類似於Throwable類中聲明的領域。

任何人都可以請解釋我爲什麼Java類庫開發人員決定這麼做?

回答

2

可能是因爲沒有人想過將它刪除。

cause被添加到ThrowableJDK 1.4;它不在1.3中。

然而,1.3版本的ClassNotFoundException也有一個原因,因爲這個異常時會發生靜態初始化失敗(實際上,由於任何負載的問題),並且不知道原因的調試工作可能是非常令人沮喪。

1

可能是他們希望向後兼容使用舊Java版本序列化的異常對象。保持字段看起來比維護自定義writeObject/readObject方法更簡單。

相關問題