au moins en lisant le Wiki:
Lorsqu'il est exécuté, si l'expression est fausse (qui est, compare égal à 0), assert() écrit des informations sur l'appel qui a échoué sur stderr puis appels abandonner().
Et le MSDN
Évalue une expression et, lorsque le résultat est faux, imprime un message de diagnostic et termine le programme.
donc pas d'exception ... un message d'erreur et le programme meurt. Rien à saisir ici :-)
Ensuite, nous pourrions parler de la différence dans la gestion des paramètres entre C et C# ... En C vous tuez le programme avec un assert
, en C# vous jetez une exception catcheable (ArgumentException
) .. Différentes méthodologies :-)
Maintenant, comment le gérer? Ne pas provoquer assert
échouer est une bonne méthode :-) assert
sont des erreurs de terminal (car même en C ils ne peuvent pas être manipulés), donc ils ne devraient pas arriver.
Vous ne pouvez pas. Assurez-vous que vous appelez le code correctement au lieu de vous fier aux exceptions. C'est exactement ce que les affirmations sont pour. – SBI
C'est * signifié * pour planter/annuler. La solution est de ne pas passer une (combinaison de) entrées à la fonction de sorte qu'elles violent les conditions préalables nécessaires pour la fonction, y compris celle-ci. –
Vous devez rester à un mile du code qui est si peu fiable que l'auteur ne lui fait pas assez confiance pour vous donner la version Release. Ou vous feriez mieux d'établir une bonne relation de travail avec lui, ça va prendre du temps pour obtenir les bugs. La chose la plus importante à faire pour vous est de lui donner de petits projets de repro pour qu'il puisse réparer ses bugs. –