2 votes

Pourquoi l'exception UnrecoverableKeyException est-elle déclenchée dans ce cas ?

J'ai un code dans lequel j'accède au keystore. Lorsque mon mot de passe est erroné, j'obtiens une exception de type UnrecoverableKeyException . J'ai donc écrit mon code comme suit :

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

        }

Mais cela ne permet pas de détecter l'exception. Ainsi, dans mon catch j'ai modifié mon code en :

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

qui attrape l'exception et imprime le type de classe est de class java.io.IOException . Mais pourquoi est-ce que je reçois d'abord un message disant que l'exception est de UnrecoverableKeyException ?

Que se passe-t-il en réalité ?

Merci d'avance.

4voto

casablanca Points 41814

Le Javadoc de KeyStore.load indique qu'il peut lancer un IOException et aussi :

Si l'erreur est due à un mot de passe erroné, la cause de l'exception IO devrait être une exception de type UnrecoverableKeyException.

Cela signifie que ce que vous attrapez est en fait un IOException pero e.getCause() serait une UnrecoverableKeyException . Lorsque la trace de la pile est imprimée, vous voyez toutes les causes de la chaîne, ce qui vous a peut-être amené à penser qu'il s'agissait d'un problème de UnrecoverableKeyException .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X