2012-07-03 69 views
2

我有一個代碼,我訪問密鑰庫。當我的密碼錯誤時,我得到UnrecoverableKeyException類型的例外。所以我寫我的代碼爲:爲什麼在這種情況下引發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) 
} 

其捕獲異常,並打印類類型是class java.io.IOException。但爲什麼首先我得到的消息是例外是UnrecoverableKeyException

究竟發生了什麼?

在此先感謝。

+0

你確定有東西沒有解開異常嗎?你能從UnrecoverableKeyException中顯示堆棧跟蹤嗎? –

回答

3

KeyStore.load的Javadoc指出它可以拋出IOException,也:

如果錯誤是由於密碼錯誤,則IOException的cause應該是一個UnrecoverableKeyException

這意味着你捕獲的實際上是IOException,但是e.getCause()將是UnrecoverableKeyException。當堆棧跟蹤被打印時,您會看到鏈中的所有原因,這可能導致您認爲它是一個UnrecoverableKeyException

相關問題