2012-07-03 7 views
2

키 저장소에 액세스하는 코드가 있습니다. 암호가 틀리면 UnrecoverableKeyException 유형의 예외가 생깁니다. 그래서 내 코드를 다음과 같이 작성했습니다.왜 UnrecoverableKeyException 예외가 발생합니까?

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

     } 

하지만 예외는 발생하지 않습니다. 예외를 잡아 클래스 유형이 class java.io.IOException입니다 인쇄

catch(Exception e) 
{ 
    log.error(e.getClass(),e) 
} 

: 그래서 내 catch 블록에, 나는 내 코드를 변경했습니다. 하지만 왜 처음에는 예외가 UnrecoverableKeyException이라는 메시지가 나옵니까?

실제로 어떻게됩니까?

미리 감사드립니다.

+0

예외를 래핑하지 않는 것이 확실합니까? UnrecoverableKeyException에서 스택 추적을 표시 할 수 있습니까? –

답변

3

KeyStore.load의 자바 독은 또한 IOException 던져 수 있다고 : 오류가 잘못된 암호로 인해

경우, IOException이의 원인은 않고 UnrecoverableKeyException

해야한다 즉, 실제로는 IOException이지만 e.getCause()UnrecoverableKeyException입니다. 스택 트레이스가 인쇄되면 체인의 모든 원인을 볼 수 있으며 아마도 UnrecoverableKeyException이라고 생각하게됩니다.

관련 문제