11 votes

Lancer NotImplementedException sur un cas par défaut dans une instruction switch

Devrais-je jeter une NotImplementedException() sur default, si j'ai des cas pour tous les types d'enum possibles?

1voto

David Espart Points 3608

Je lancerais ApplicationException car si votre code atteint la valeur par défaut et que vous ne vous y attendiez pas, cela signifie qu'une partie de votre code ne se comporte pas comme vous le pensiez.

1voto

aJ. Points 17014

Cela dépend vraiment de votre cas d'utilisation. Ce sera utile si vous lancez une exception pendant les premiers jours de l'intégration. Les utilisateurs de votre bibliothèque peuvent immédiatement connaître les erreurs

0voto

Max Galkin Points 10116

Je dirais qu'au minimum, tu devrais mettre un Debug.Fail() là.

Vous devriez jeter une exception dans le cas où la méthode ne peut en aucun cas continuer. Mais si vous êtes en train de convertir vos valeurs enum en représentations de chaîne, alors vous pouvez simplement renvoyer une chaîne d'avertissement à la place. Le produit ne plantera pas chez les utilisateurs en raison d'une erreur évidente, il y aura probablement une solution de contournement, et tout le monde sera content.

0voto

Si vous déclenchez l'exception, que se passerait-il? Dans quel contexte l'instruction switch est-elle exécutée? Cette situation devrait-elle jamais se produire? Devrait-elle jamais se produire en temps d'exécution dans le code de production? Vos tests unitaires couvrent-ils cette situation? Si c'est le cas, peut-être qu'un assert serait mieux.

0voto

Brian Schroth Points 2000

Vous devriez d'abord considérer ce que cela signifierait si vous obteniez une valeur en dehors des cas connus - qu'est-ce que la variable sur laquelle vous effectuez un switch représente? Ensuite, vous pourriez simplement utiliser un type d'exception correspondant à ce qui se passe réellement.

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