0

サードパーティ独自のライブラリを呼び出す Java コードがあります。

public String decrypt(String inputString) {
    return ThirdPartyDecrypter.decrypt(inputString);
}

上記のコードは、99% のユーザーに対してコンパイルおよび動作します。ただし、不適切な不適切な入力文字列を意図的に送信すると、上記のメソッドは java.io.StreamCorruptedException をスローします。

私はその例外をキャッチし、エラーケースで何か他のことをしたいと思います:

public String decrypt(String inputString) {
    try {
        return ThirdPartyDecrypter.decrypt(inputString);
    } catch (StreamCorruptedExcepton streamException) {
        System.out.println("case streamException");
        streamException.printStackTrace(); // does not execute
            throw MyNewException(streamException);
    } catch (Exception e) {
        System.out.println("case e");
        e.printStackTrace(); 
            throw MyNewException(streamException);
    }
}

上記のコードを実行すると、StreamCorruptedException はキャッチされず、MyNewException の代わりにスローされます。

StreamCorruptedException をキャッチするにはどうすればよいですか? また、StreamCorruptedException はチェック例外である必要があることも読みました。では、サードパーティのライブラリはどのようにそれをスローしているのでしょうか (API でスローを宣言していないため)。

4

0 に答える 0