Un assert, ca arrete l'application comme une grosse brutasse. Il y a des applications ou c'est le comportement desiré, mais dès qu'il y a un utilisateur en face, c'est pas une bonne idée. Un beau message d'erreur disant le module dans lequel s'est produit l'erreur est quand même bien plus informatif. Il peut y avoir aussi du nettoyage à faire en cas de plantage (cf ce que je dis à la fin de mon message).
Autre inconvenient de l'assert : compare les messages d'erreurs suivants :
v1:
ASSERTION FAILED at file toto.c line 38
v2:
ASSERTION FAILED at file toto. c line 38 : a >= 0
v3:
CardCommunication Error : some_func() : a should be > 0 but is -3
Les grands fans des asserts sont en général des fainéants et dans 80% des cas, on se retrouve avec des message type v1. Tracer le problème est un peu lourd.
Dans quelques cas chanceux, on est en v2.
Dans mes programmes, on est en v3. Sachant que j'ai par ailleurs tout le log de l'execution, je suis capable de diagnostiquer le problème beaucoup plus rapidement. Et c'est bien car en général, quand on cherche un problème, on est pressé.
Je suis sur que les fans des asserts auraient écrit un code 3 fois plus petit. Mais je pense que le mien est beaucoup beaucoup mieux avec des messages d'informations et des messages d'erreur qu'avec des asserts.
[^] # Re: Vive les exceptions !
Posté par Philippe F (site web personnel) . En réponse au journal Qu'est-ce que bien gérer les erreurs dans ses programmes ?. Évalué à 1.
Autre inconvenient de l'assert : compare les messages d'erreurs suivants :
v1:
ASSERTION FAILED at file toto.c line 38
v2:
ASSERTION FAILED at file toto. c line 38 : a >= 0
v3:
CardCommunication Error : some_func() : a should be > 0 but is -3
Les grands fans des asserts sont en général des fainéants et dans 80% des cas, on se retrouve avec des message type v1. Tracer le problème est un peu lourd.
Dans quelques cas chanceux, on est en v2.
Dans mes programmes, on est en v3. Sachant que j'ai par ailleurs tout le log de l'execution, je suis capable de diagnostiquer le problème beaucoup plus rapidement. Et c'est bien car en général, quand on cherche un problème, on est pressé.
Tu peux regarder ça pour voir ce que ça donne en pratique :
http://svn.yzis.org/filedetails.php?repname=Yzis&path=%2(...)
Je suis sur que les fans des asserts auraient écrit un code 3 fois plus petit. Mais je pense que le mien est beaucoup beaucoup mieux avec des messages d'informations et des messages d'erreur qu'avec des asserts.