45 votes

Quand le rejet able à l’œil doit-il être utilisé au lieu d’une nouvelle exception ?

Donnée: Throwable est Exception de la super-classe.

Quand j'ai lu des textes sur l'écriture de votre propre "exceptions", je vois des exemples d' Throwable utilisé dans l' catch bloc et d'autres textes montrent new Exception() utilisé dans l' catch bloc. Je n'ai pas encore de voir une explication de quand il faut utiliser chaque.

Ma question est la suivante, quand doit - Throwable être utilisé et quand doit - new Exception() - ils être utilisés?

EDIT: à l'Intérieur de l' catch ou else bloc en utilisant soit:

throw throwable;

ou

throw new Exception();

43voto

Ray Hidayat Points 7961

Toujours lancer une exception (jamais un jetable). En général, vous n’attrapez pas Throwable non plus, mais vous pouvez. Throwable est la superclasse à l’exception et l’erreur, de sorte que vous attraper throwable si vous vouliez non seulement attraper exceptions, mais des erreurs, c’est le point de l’avoir. La chose est, Les erreurs sont généralement des choses qu’une application normale ne serait pas et ne devrait pas attraper, alors il suffit d’utiliser Exception sauf si vous avez une raison spécifique d’utiliser Throwable.

15voto

Zach Scrivena Points 15052

(de commentaires) sur Le problème que cela, c'est que J'ai besoin de passer une "exception" à une morceau de code, un collègue de travail est la construction d' si la collection n'est pas construite.

Dans ce cas, vous pourriez vouloir jeter un checked exception. Vous pouvez jeter un Exception, une sous-classe existante (sauf RuntimeException et de ses sous-classes qui sont décochée), ou une sous-classe personnalisée d' Exception (par exemple,"CollectionBuildException"). Voir la Java Tutoriel sur les Exceptions pour obtenir jusqu'à la vitesse avec Java exceptions.

9voto

MichaelD Points 135

Vous ne devriez pas vraiment attraper une exception et jeter un nouveau aussi général que "nouvelle exception".

Au lieu de cela, si vous souhaitez buller l’exception il suffit de faire ce qui suit:

Il n’est pas bon, je crois, d’attraper une exception et de lancer une nouvelle exception au lieu de celle qui a été soulevée à votre bloc de code, à moins que vous souleviez une exception personnalisée utile qui fournit suffisamment de contexte pour échapper à la cause de l’exception originale.

5voto

uranazo Points 41

Seulement deux endroits que vous devriez voir le mot dans le `` code:

Et

1voto

Michiel de Mare Points 15888

<strike>Throwable est une interface, pas une classe.</strike> Deux classes prolongent Throwable, Exception et Erreur.

La règle est la suivante: être aussi spécifique que vous pouvez lors de la capture des exceptions - ce qui signifie par exemple attraper Exception au lieu de Jetable, et IOException au lieu d’exception.

Ne pas attraper les erreurs - les erreurs sont des bogues. Réparez le code à la place.

Si vous devez attraper absolument tout, utilisez "catch Throwable", mais c’est une mauvaise forme.

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