Meilleures pratiques pour attraper Throwable en Java
Parfois, vous avez juste à attraper Throwable, par exemple lors de la rédaction d'un répartiteur de la file d'attente qui distribue les éléments génériques et a besoin de récupérer d'éventuelles erreurs (dit répartiteur journaux tous pris des exceptions, mais en silence, et puis l'exécution est poursuivie sur d'autres articles).
Une meilleure pratique, je peux penser à est de toujours renvoyer l'exception, si c'est InterruptedException, parce que cela signifie que quelqu'un a interrompu mon fils et veut le tuer.
Une autre suggestion (qui vient d'un commentaire, pas une réponse), c'est de toujours renvoyer ThreadDeath
Toutes les autres pratiques exemplaires?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Probablement le plus important est, jamais avaler une checked exception. Par cela, je veux dire à ne pas faire:
à moins que vous avez l'intention. Parfois, les gens avaler checked exceptions, car ils ne savent pas quoi faire avec eux ou ne veulent pas (ou ne peuvent pas) se polluer de leur interface avec les "jette" l'Exception des clauses.
Si vous ne savez pas quoi faire avec elle, faites ceci:
L'autre qui vient à l'esprit est de vous assurer de traiter les exceptions. La lecture d'un fichier devrait ressembler à quelque chose comme ceci:
Dépend de ce que vous travaillez sur.
si vous développez une API pour être utilisé par quelqu'un d'autre, de son mieux pour re-lancer l'Exception ou l'envelopper dans une exception personnalisée de la vôtre et de le jeter.
Alors que si vous êtes en développement à l'utilisateur final de l'application vous avez besoin pour gérer cette exception et de faire le nécessaire.
Ce sujet OutOfMemoryError (ou peut-être de sa super-classe VirtualMachineError)? Je ne peux pas imaginer il ya beaucoup que vous pouvez faire quelque chose de sérieux.
Si vous êtes à la rédaction d'un répartiteur de la file d'attente, puis au moment où l'exception est de retour pour vous il n'y a pas de raison de faire quoi que ce soit avec l'exploitation forestière. Le Swing file d'attente d'événements a, fondamentalement, ce type de comportement.
Alternativement, vous pouvez fournir un crochet pour une "exception non interceptée," semblable à ThreadGroup. Sachez que le gestionnaire pourrait prendre un certain temps, et à la fin de retarder votre répartiteur.
Autant que InterruptedException va: la seule chose qui se soucie de qui est votre expédition en boucle, ce qui devrait être la vérification de certaines extérieure de l'état pour voir si elle doit arrêter le traitement.