Exception

Exception

by Gaëtan Emmanuel Mancini -
Number of replies: 2

Bonjour,

J'ai une question concernant les exceptions. Dans notre projet, nous avons été amené à lancer des exceptions dans certains cas. Du coup, il nous faut les attraper quelque part, pour le moment nous l'avons fait dans nos fichiers tests. 

Mais le fait de lancer des exceptions n'est-il pas un peu problématique avec la POO, étant donné que c'est le programmeur développeur qui lance les exceptions et que possiblement c'est au programmeur utilisateur de faire en sorte que celles-ci soient attrapées ?

Y a-t-il un moyen d'éviter ce problème ?

In reply to Gaëtan Emmanuel Mancini

Re: Exception

by Deleted user -

Alors voilà mon avis personnel, mais je suis curieux de savoir si ce n'est que le mien.

Si vous avez décidé de lancer des erreurs, c'est probablement parce que vous êtes dans une situation que vous n'avez pas prévu de gérer, par exemple, les opérations mathématiques entres Vecteur de tailles inégales.
Mais en soit, maintenant que vous avez fait ce choix, ne serait-ce pas de la faute de l'utilisateur s'il tente de faire ces opérations mathématiques incorrectes... ?

Un peu comme si vous essayez d'accéder à un élément inexistant d'un std::vector au final (même si là, c'est une segmentation fault; donc pas strictement une exception).

Selon moi, c'est l'utilisateur de votre classe qui doit être averti des throws (et dans quel cas ils surviennent) et il est ensuite responsable de placer des try/catch là où cela lui semble bon.

Je le répète, c'est simplement mon opinion / ma vision de la conception OOP avec des exceptions, qui est probablement incomplète :)

In reply to Deleted user

Re: Exception

by Jean-Cédric Chappelier -

oui c'est bien ça l'esprit général et pour compléter par rapport au cadre de la question de départ : les exceptions sont bien de la délégation de responsabilités : c'est justement parce que le programmeur fournisseur ne peut traiter correctement l'erreur qu'il la délègue au programmeur utilisateur.
Mais, comme dit par Louis, il faut alors l'avertir : essentiellement par la documentation (à noter qu'en C++, sauf cas particuliers [hors du cours], toute fonction/méthode est supposée pouvoir potentiellement lancer des exceptions).