2

キーストアにアクセスするコードがあります。パスワードが間違っていると、 type の例外が発生しますUnrecoverableKeyException。だから私は自分のコードを次のように書きました:

    try {
            InputStream f = new FileInputStream("<location to file>")
            keyStore.load( f , passwords );
        } catch(UnrecoverableKeyException e){
                 log.error("")

        }

しかし、それは例外をキャッチしません。したがって、私のcatchブロックでは、コードを次のように変更しました。

catch(Exception e)
{
  log.error(e.getClass(),e)
}

これは例外をキャッチし、クラス タイプが of であることを出力しclass java.io.IOExceptionます。しかし、そもそも例外がのというメッセージが表示されるのはUnrecoverableKeyExceptionなぜですか?

実際に何が起こっているのですか?

前もって感謝します。

4

1 に答える 1

4

のJavadocはKeyStore.load、をスローできると述べていますIOException

エラーの原因がパスワードの誤りである場合、IOExceptionの原因はUnrecoverableKeyExceptionである必要があります

これは、あなたが捕まえるものは実際にはですが、であることを意味IOExceptione.getCause()ますUnrecoverableKeyException。スタックトレースが出力されると、チェーン内のすべての原因が表示されます。これにより、おそらくそれがであると思われるようになりますUnrecoverableKeyException

于 2012-07-03T14:40:15.773 に答える