483 votes

Réintroduction d'exceptions en Java

En C #, je peux utiliser l'instruction throw; pour renvoyer une exception tout en préservant la trace de la pile:

 try
{
   ...
}
catch (Exception e)
{
   if (e is FooException)
     throw;
}
 

Y a-t-il quelque chose comme ça en Java ( qui ne perd pas la trace de la pile d'origine )?

658voto

Brian Agnew Points 143181
 catch (WhateverException e) {
    throw e;
}
 

va simplement réécrire l'exception que vous avez attrapée (évidemment la méthode environnante doit permettre cela via sa signature etc.). L'exception conservera la trace de la pile d'origine.

88voto

Olvagor Points 811

Vous pouvez également envelopper l'exception dans un autre et conserver la trace de la pile d'origine en transmettant l'exception en tant que Throwable en tant que paramètre cause:

 try
{
   ...
}
catch (Exception e)
{
     throw new YourOwnException(e);
}
 

87voto

Markus Lausberg Points 6944
Je préférerais

20voto

alves Points 869

En Java est presque le même:

 try
{
   ...
}
catch (Exception e)
{
   if (e instanceof FooException)
     throw e;
}
 

14voto

David M Points 45808

En Java, vous venez de lancer l'exception que vous avez interceptée, donc throw e plutôt que seulement throw . Java maintient la trace de la pile.

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