サードパーティ独自のライブラリを呼び出す 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 でスローを宣言していないため)。