-
assertion vs exception
salusalu
Situation :
Je réalise une application dans laquel je souhaite avoir un maximum de contrôle sur la gestion des erreurs aussi bien pour l'utilisateur final que pour le développeur tièrce qui utilisera l'application.
Les messages ainsi générer doivent être précis (backtrace) tout en étant souple et rapide à utiliser pour les développeurs.
Mon avis :
Les assertions sont rapide à cour-circuiter et simple a mettre en oeuvre, en utilisant une fonction de callback ou peut contrôler les résulats.
Les exceptions offre une plus grande liberté, mais sont plus compliqué a mettre en place, sourtout au début.
Question :
Actuellement, j'utilise les deux systèmes sans trop savoir quand et comment les utiliser.
Quoi utiliser et quand ?
-
Salut :wink:
:arrow: Pour moi les assertions correspondent a qqch qui ne doit jamais arriver dans le programme final. Elles servent seulement pour toi ou le developpeur tierce pour debugger le programme. Elles ne servent pas pour l'utilisateur final (d'ailleurs en C++ les assertions sont ignores en Release).
:arrow: Pour les exceptions il s'agit de qqch qui ne doit normalement pas arriver, mais il ne s'agit pas forcement d'une erreure si cela arrive.
C'est plus une facon de programmer, qui peut s'averer bien plus simple, que de faire des switch ou des if else interminable dans chaque fonction.
Plutot que de traiter tous les cas meme le plus improbable dans tes fonctions tu traite juste le cas general et leve une exception pour les autres cas que tu traite a un niveau plus eleve.
J'espere que j'ai bien repondu a ta question :roll:
-
salut
les assertions sont pour controller une variable et si le controlle est negatif tu peut lancer une exception
les assertions servent a controller un resultat attendue
-
qu'est elle donc la solution la plus compatible avec la phylosophie suivante : guérisson plutôt qu'information.
Plus clairement : je vérife tous les types de paramêtre en entrée de chaque méthode, et si un des paramêtres et faux, soit je le corrige, soit je ne fait rien. Pas de message pas d'erreur, rien.
Le seul moyen pour le développeur de connaitre l'erreur est donc d'activer les assertions.
Est ce que cela vous parrait logique ?
N'est-il pas plus aggréable pour une developpeur tièrce, de tomber (lors de ses développements) sur des dizaines d'exceptions qui arrête l'execution, pour lui permettre de corriger les erreurs une par une, et dans l'ordre ?
-
le mieux dans ce cas ets de mettre en place des test unitaire
-