Au cours de toutes mes années passées à programmer et à développer des systèmes, il n’ya que deux situations dans lesquelles j’ai trouvé le modèle en question utile (dans les deux cas, la suppression contenait également la journalisation de l’exception levée, je ne considère pas que la prise et le null
retour simples soient une bonne pratique. ).
Les deux situations sont les suivantes:
1. Lorsque l'exception n'a pas été considérée comme un état exceptionnel
C’est à ce moment-là que vous effectuez une opération sur certaines données, ce qui peut générer des jets, mais vous souhaitez tout de même que votre application continue de fonctionner, car vous n’avez pas besoin des données traitées. Si vous les recevez, c'est bien, si vous ne les recevez pas, c'est aussi bien.
Certains attributs facultatifs d'une classe peuvent être pris en compte.
2. Lorsque vous fournissez une nouvelle implémentation (meilleure, plus rapide?) D'une bibliothèque en utilisant une interface déjà utilisée dans une application
Imaginez que vous ayez une application utilisant une sorte d’ancienne bibliothèque, qui ne lançait pas d’exceptions, mais renvoyait des null
erreurs. Vous avez donc créé un adaptateur pour cette bibliothèque, copiant à peu près l'API d'origine de la bibliothèque, et utilisez cette nouvelle interface (toujours non lancée) dans votre application et null
gérez vous-même les vérifications.
Une nouvelle version de la bibliothèque est fournie, ou peut-être une bibliothèque complètement différente offrant les mêmes fonctionnalités qui, au lieu de renvoyer null
s, lève des exceptions et que vous souhaitez l’utiliser.
Vous ne voulez pas laisser les exceptions dans votre application principale. Vous devez donc les supprimer et les consigner dans l'adaptateur que vous avez créé pour envelopper cette nouvelle dépendance.
Le premier cas n'est pas un problème, c'est le comportement souhaité du code. Dans le second cas, cependant, si partout la null
valeur renvoyée par l'adaptateur de bibliothèque signifie vraiment une erreur, il null
peut être judicieux de refactoriser l'API pour générer une exception et de la capturer au lieu de la rechercher (et le code est généralement une bonne idée).
Personnellement, je n’utilise la suppression d’exception que pour le premier cas. Je ne l'ai utilisé que dans le second cas, lorsque nous n'avions pas le budget nécessaire pour que le reste de la demande fonctionne avec les exceptions au lieu de l' null
art.