3

「OraclejdbcドライバーによってスローされたいくつかのSqlExceptionsが原因フィールドでそれ自体を参照している」と読んだばかりです。私見の例外は、私が自分の髪の毛で沼から身を引くのと同じくらい簡単に自分自身を引き起こす可能性があります。

しかし、これは正常のようでありThrowable.printStackTrace、「循環参照」を認識します。これは、私が知っているJDKでの唯一の場所です(たとえば、すべてのArrays.deep*メソッドが再帰構造のスタックオーバーフローになります)。

では、原因チェーンにサイクルを作成する理由は何ですか?

4

1 に答える 1

2

cause==this原因が初期化されていないことを意味します。 getCause()そのような場合に戻りnullます。のコードは、Throwable.printStackTrace複数要素のループを処理するために存在します。このようなループの正当な理由はないと思いますが、バグや悪意が原因で侵入した可能性があります。

于 2012-10-29T03:02:12.930 に答える