我有一些调用第三方专有库的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中声明任何抛出)?