Java 为什么在这种情况下引发UnrecoverableKeyException异常?

Java 为什么在这种情况下引发UnrecoverableKeyException异常?,java,Java,我有一个访问密钥库的代码。当我的密码错误时,我会得到类型为UnrecoverableKeyException的异常。因此,我将代码编写为: try { InputStream f = new FileInputStream("<location to file>") keyStore.load( f , passwords ); } catch(UnrecoverableKeyException e){

我有一个访问密钥库的代码。当我的密码错误时,我会得到类型为
UnrecoverableKeyException
的异常。因此,我将代码编写为:

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

        }
捕获异常并打印类类型为
类java.io.IOException
。但是,为什么首先我会收到一条消息,异常是属于
不可恢复的KeyException

到底发生了什么

提前感谢。

Javadoc声明它可以抛出
IOException
,并且:

如果错误是由错误的密码引起的,IOException的原因应该是不可恢复的KeyException


这意味着您捕获的实际上是一个
IOException
,但是
e.getCause()
将是一个
不可恢复的keyexception
。打印堆栈跟踪时,您会看到链中的所有原因,这可能会让您认为这是一个
不可恢复的KeyException

您确定有什么东西没有打开异常吗?能否显示来自UnrecoverableKeyException的堆栈跟踪?
catch(Exception e)
{
  log.error(e.getClass(),e)
}