1

私は Oracle の Java 実装 (1.6.0_37) を持っており、ClassNotFoundExceptionソース コードに興味があります。それを調べると、このクラスが原因の独自のコピーを格納していることがわかります。

private Throwable ex;

私はそれに何の意味も見当たりません-それはThrowableクラスで宣言されたフィールドと完全に似ています。

Java クラス ライブラリの開発者がそうすることにした理由を誰か説明してもらえますか?

4

2 に答える 2

2

おそらく、誰もそれを削除しようとは思わなかったからです。

JDK 1.4causeで追加されThrowableました。1.3にはありませんでした。

ただし、1.3バージョンにClassNotFoundExceptionは原因がありました。この例外は、静的初期化子が失敗したときに発生する可能性があり (実際には、読み込みの問題が原因で)、原因を知らずにデバッグすると非常にイライラする可能性があるためです。

于 2013-01-22T18:57:10.867 に答える
1

古いJavaバージョンでシリアル化された例外オブジェクトとの下位互換性が必要な場合があります。フィールドを維持することは、カスタムのwriteObject/readObjectメソッドを維持するよりも簡単に思えます。

于 2013-01-22T19:18:26.247 に答える