J'ai lu beaucoup de articles (et quelques autres similaire questions qui ont été postées sur StackOverflow) sur comment et quand utiliser les assertions, et je les ai bien comprises. Mais je ne comprends toujours pas quel type de motivation devrait me pousser à utiliser des Debug.Assert
au lieu de lever une simple exception. Ce que je veux dire, c'est que dans .NET, la réponse par défaut à l'échec d'une assertion consiste à "arrêter le monde" et à afficher un message à l'utilisateur. Bien que ce type de comportement puisse être modifié, je trouve cela très ennuyeux et redondant. de faire cela, alors que je pourrais, à la place, simplement lancer une exception appropriée. De cette façon, je pourrais facilement écrire l'erreur dans le journal de l'application juste avant de lancer l'exception, et en plus, mon application ne se fige pas nécessairement.
Alors, pourquoi devrais-je, si tant est que je le fasse, utiliser Debug.Assert
au lieu d'une simple exception ? Placer une assertion là où elle ne devrait pas l'être pourrait simplement provoquer toutes sortes de "comportements indésirables", donc de mon point de vue, je ne gagne rien à utiliser une assertion au lieu de lancer une exception. Êtes-vous d'accord avec moi, ou est-ce que quelque chose m'échappe ?
Note : Je comprends parfaitement la différence "en théorie" (Debug vs Release, modèles d'utilisation, etc.), mais à mon avis, il serait préférable de lancer une exception au lieu d'effectuer une assertion. Si un bogue est découvert dans une version de production, je voudrais quand même que l'"assertion" échoue (après tout, l'"overhead" est ridiculement faible), et je ferais donc mieux de lancer une exception à la place.
Edita: De la façon dont je le vois, si une assert échoue, cela signifie que l'application est entrée dans une sorte d'état corrompu et inattendu. Alors pourquoi voudrais-je continuer l'exécution ? Peu importe que l'application s'exécute sur une version de débogage ou de publication. Il en va de même pour les deux