Si la capture exception de pointeur null n'est pas une bonne pratique, est la capture de l'exception une bonne?
J'ai entendu dire que la capture de NullPointerException
est une mauvaise pratique, et je pense qu'il est avisé. Laisser le NullPointerException
à se propager vers le haut serait de permettre la détection d'un quelque chose va mal. Mais plusieurs fois, j'ai vu beaucoup de mes amis attraper Exception
directement, de sorte qu'ils ne doivent pas se préoccuper de tous les différents types d'exceptions qui peuvent se produire dans le code ci-dessus. Est-ce une bonne pratique? Quels sont les autres types d'exceptions qui sont mieux gauche non gérée? Et en plus elle a aussi du sens pour moi à gérer NullPointerException
sur un code spécifique où l'on est sûr de la source de l'exception. Ainsi, lorsque des exceptions à être manipulés et quand doivent-ils pas être traités? Et ce serait l'éventuelle liste d'exception qui sont mieux gauche non gérée?
I have heard that catching NullPointerException is a bad practice, and i think it is sensibly so. Letting the NullPointerException to propagate to the top would allow the detection of a something going wrong
" ne rend pas beaucoup de sens pour moi. N'êtes-vous pas à confusion 'rattrapage' avec 'avaler' ?Il n'y a rien de mal à attraper
NullPointerException
et de faire quelque chose avec elle. Il en va ainsi de toute exception. L'idée générale est d'attraper les exceptions qui peuvent être traitées, et pas l'attraper (laisser passer) ceux qui ne peuvent pas être traitées. Donc, je dois être en désaccord avec ce que vous avez entendu.OriginalL'auteur sasidhar | 2011-01-17
Vous devez vous connecter pour publier un commentaire.
Pokemon de gestion des exceptions est mauvais. En particulier, si c'est un bloc vide et vous êtes tout simplement de la déglutition. Vous avez tapé les exceptions pour la raison qu'ils signifient réellement des choses spécifiques dans des contextes spécifiques (essentiellement, ils vous disent ce qui s'est passé). Donc, par la capture de
Exception
vous êtes en train de dire que vous ne vous souciez pas de ce que ces exceptions sont, et que vous ne vous souciez pas ce qui s'est passé. Ce n'est probablement pas ce que vous voulez.En général, lors de la capture des exceptions à suivre ces règles:
Vous pouvez facilement vérifier une valeur null dans votre code, donc il n'est pas nécessaire explicitement attraper un null pointer exception. Il n'est pas judicieux de laisser un
NullPointerException
arriver (et c'est une mauvaise pratique). Même si vous avez un code qui jette unNullPointerException
, et c'est le code que vous ne contrôle pas et ne peut pas résoudre, vous devez déterminer les paramètres d'entrée qui causent laNullPointerException
et tester spécifiquement pour eux.Une autre exception que vous ne devriez pas le catch est la
IllegalArgumentException
. Cette exception signifie que vous avez passé dans un argument qui n'a pas de sens. Au lieu d'attraper cette exception, vous devez explicitement tester vos paramètres d'entrée pour s'assurer qu'ils sont sains et qu'ils ne peuvent pas causer unIllegalArgumentException
.catch(Exception ex){ lorsque vous voulez attraper tous.
"Pokemon gestion des exceptions" : Gotta Catch 'Em All 😀
OriginalL'auteur Vivin Paliath
La raison que la capture de
NullPointerException
est considéré comme une mauvaise pratique n'est pas parce que vous êtes censé laisser bouillonner quand quelque chose va mal! Dire toute exception est "mieux gauche non gérée", en vous basant uniquement sur son type semble être une mauvaise idée.Un NPE est considéré comme le résultat d'une erreur de programmation. Strictement correcte d'un programme ne devrait jamais en produire un. La raison de le voir pris le mauvais, cela signifie généralement que le code a jeté un, et le programmeur décidé de l'attraper et de le couvrir, plutôt que de fixer le code cassé qu'il a causé en premier lieu!
Si, par exemple, vous avez été couplé à des fins d'affaires à une API qui a un bug à l'intérieur et de temps en temps jette un pointeur null, il serait parfaitement légitime de l'attraper, faire quelque chose/avertir l'utilisateur un meilleur message. Laisser 'null', frappé de l'INTERFACE utilisateur juste parce que quelqu'un dit "Rattrapage Exception de Pointeur Null est mauvais", n'aurait aucun sens!
Attraper
java.lang.Exception
peut être légitime dans certains cas, mais en général, "je suis paresseux" n'est pas l'un d'eux. 🙂 Par exemple, si vous êtes à la mise en œuvre d'une API et que vous voulez faire absolument sûr pas exception ne vient jamais de ce qui n'est pas dans le cahier des charges, vous pourriez attraper Exception et l'envelopper dans certains exception de l'application que vous avez définie.OriginalL'auteur Affe
Vous ne devez attraper une Exception si vous pouvez ajouter de la valeur en le faisant. Sinon, vous devez le laisser passer à l'appelant.
NullPointerException est généralement le résultat d'un bug dans votre code. Comment pouvez-vous raisonnablement résoudre ce problème dans un bloc catch?
De ne pas être dérangé au sujet des Exceptions n'est pas une bonne pratique.
OriginalL'auteur Peter Lawrey
En général, la seule fois où vous devez attraper une exception est si vous pouvez le manipuler de manière significative. Si vous ne pouvez pas, vous devez simplement laisser la bulle vers le haut et terminer le processus. Par exemple, pourriez-vous récupérer de manière significative à partir d'un NullPointerException ou I/O erreur? Je ne pense pas.
Mes règles pour la gestion des exceptions:
throw ;
plutôt quethrow caughtException ;
. L'utilisation de l'ancienne syntaxe conserve la trace de la pile d'origine; de l'utilisation de la dernière syntaxe crée une nouvelle trace de la pile, en commençant parthrow caughtException ;
-- vous perdez tout le contexte et la pile d'appels jusqu'au point à laquelle l'exception a été pris.Ne pas utiliser les exceptions, comme un mécanisme de contrôle de flux (si possible). Les Exceptions sont censés être, ainsi, un caractère exceptionnel. Plutôt, premptively, appliquer de l'appelant fin du contrat (conditions préalables) pour toutes les méthodes que vous êtes en invoquant.
Voir Bertrand Meyers livre , Orientée objet de la Construction de Logiciel, 2e ed. pour plus d'informations.
OriginalL'auteur Nicholas Carey
La règle principale au sujet de la capture de l'exception est que vous devez savoir pourquoi vous faites cela. Classe d'Exception est attrapée dans les cas où le programmeur veut faire d'erreur générique de traitement et il n'a pas vraiment attention à ce qui s'est exactement passé, la chose principale est que quelque chose s'est mal passé. Dans ce cas, il peut décider de la transaction d'annulation ou de faire du nettoyage.
Si vous êtes à la capture d'exception spécifique essayer d'appliquer la même règle. Je vous savez exactement pourquoi vous faites cela, alors c'est pour le faire. Mais il est très rare que quelqu'un aurait envie de faire quelque chose de vraiment spécial en cas de NPE.
OriginalL'auteur Stas
si vous avez une gracieuse façon de gérer votre exception, elle est utile pour l'attraper, si ce n'est l'espoir que l'appelant a une belle façon de le gérer.
OriginalL'auteur Robokop