Le souci avec tout ça, c'est l'appel à la classe Language, qui est un
singleton permettant de récupérer une chaine de caractères dans un fichier
XML...
Si on prend l'exemple DSE::DS_Bad_Connect(pRender->SetTimelineObject
(pTL),"pTimeline","pRender");, la chaine Message construite dans le
constructeur de la classe devient EDS_Bad_Connect:
Erreur - DirectShow : Impossible de connecter pTimeline -> pRender
Cette méthode impose qu'il existe un fichier XML avec toutes les chaines de
caractère dont peut avoir la bibliothèque pour expliciter les erreurs
qu'elle rencontre, ce qui n'est clairement pas une bonne chose. D'autant
que si le fichier n'existe pas, la bibliothèque est inutilisable.
Donc ce que je voulais savoir, c'est la manière dont une bibliothèque doit
gèrer les exceptions.
Est-ce que je dois utiliser du code comme ça:
if (FAILED(pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl)))
throw BadInit(IMediaControl);
if (FAILED(pRender->SetTimelineObject(pTL)))
throw BadConnect("pTimeline","pRender");
Et c'est à l'utilisateur de la bibliothèque de gérer toutes les exceptions
possibles à chaque fois qu'il l'utilise?
Ou bien on ne doit laisser à l'utilisateur que la possibilité de gérer les
exceptions sur lesquelles il peut réellement agir?
En effet, je peux différencier des exceptions internes à la bibliothèque
(comme les 3 exemples cités) sur lesquels l'utilisateur ne peut rien faire,
et des exceptions sur lesquelles il est possible d'agir (comme par exemple
l'impossibilité de trouver un fichier vidéo qu'on veut lire...)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Bourguet
Michael <michael.at.gmail.dot.com> writes:
Merci d'avance pour vos conseils
* Utiliser des exceptions quand l'erreur doit etre traitee par quelqu'un d'autre que l'appelant, un code d'erreur quand l'exception doit etre traitee par l'appelant direct (a chaque fois, il faut considerer la frontiere entre sous-systeme). Il y a une troisieme possibilite: appeler une fonction gestionnaire d'erreur enregistree par l'utilisateur.
* Separer le report des erreurs du formatage d'un eventuel message. Les exceptions, les codes d'erreurs transmettent une description logique du probleme. Si l'utilisateur veut le formater, il s'en occupe tout seul comme un grand (on peut prevoir dans la bibliotheque un moyen de le faire, mais c'est un service separe des exceptions et des codes d'erreurs).
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Michael <michael.at.gmail.dot.com> writes:
Merci d'avance pour vos conseils
* Utiliser des exceptions quand l'erreur doit etre traitee par
quelqu'un d'autre que l'appelant, un code d'erreur quand l'exception
doit etre traitee par l'appelant direct (a chaque fois, il faut
considerer la frontiere entre sous-systeme). Il y a une troisieme
possibilite: appeler une fonction gestionnaire d'erreur enregistree
par l'utilisateur.
* Separer le report des erreurs du formatage d'un eventuel message.
Les exceptions, les codes d'erreurs transmettent une description
logique du probleme. Si l'utilisateur veut le formater, il s'en
occupe tout seul comme un grand (on peut prevoir dans la bibliotheque
un moyen de le faire, mais c'est un service separe des exceptions et
des codes d'erreurs).
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
* Utiliser des exceptions quand l'erreur doit etre traitee par quelqu'un d'autre que l'appelant, un code d'erreur quand l'exception doit etre traitee par l'appelant direct (a chaque fois, il faut considerer la frontiere entre sous-systeme). Il y a une troisieme possibilite: appeler une fonction gestionnaire d'erreur enregistree par l'utilisateur.
* Separer le report des erreurs du formatage d'un eventuel message. Les exceptions, les codes d'erreurs transmettent une description logique du probleme. Si l'utilisateur veut le formater, il s'en occupe tout seul comme un grand (on peut prevoir dans la bibliotheque un moyen de le faire, mais c'est un service separe des exceptions et des codes d'erreurs).
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Michael
* Utiliser des exceptions quand l'erreur doit etre traitee par quelqu'un d'autre que l'appelant, un code d'erreur quand l'exception doit etre traitee par l'appelant direct (a chaque fois, il faut considerer la frontiere entre sous-systeme). Il y a une troisieme possibilite: appeler une fonction gestionnaire d'erreur enregistree par l'utilisateur.
Je ne comprends pas très bien ce que tu entends par appellant... L'utilisateur de la bibliothèque?
* Separer le report des erreurs du formatage d'un eventuel message. Les exceptions, les codes d'erreurs transmettent une description logique du probleme. Si l'utilisateur veut le formater, il s'en occupe tout seul comme un grand (on peut prevoir dans la bibliotheque un moyen de le faire, mais c'est un service separe des exceptions et des codes d'erreurs).
OK, c'est bien ce que je pensais...
Merci
* Utiliser des exceptions quand l'erreur doit etre traitee par
quelqu'un d'autre que l'appelant, un code d'erreur quand l'exception
doit etre traitee par l'appelant direct (a chaque fois, il faut
considerer la frontiere entre sous-systeme). Il y a une troisieme
possibilite: appeler une fonction gestionnaire d'erreur enregistree
par l'utilisateur.
Je ne comprends pas très bien ce que tu entends par appellant...
L'utilisateur de la bibliothèque?
* Separer le report des erreurs du formatage d'un eventuel message.
Les exceptions, les codes d'erreurs transmettent une description
logique du probleme. Si l'utilisateur veut le formater, il s'en
occupe tout seul comme un grand (on peut prevoir dans la bibliotheque
un moyen de le faire, mais c'est un service separe des exceptions et
des codes d'erreurs).
* Utiliser des exceptions quand l'erreur doit etre traitee par quelqu'un d'autre que l'appelant, un code d'erreur quand l'exception doit etre traitee par l'appelant direct (a chaque fois, il faut considerer la frontiere entre sous-systeme). Il y a une troisieme possibilite: appeler une fonction gestionnaire d'erreur enregistree par l'utilisateur.
Je ne comprends pas très bien ce que tu entends par appellant... L'utilisateur de la bibliothèque?
* Separer le report des erreurs du formatage d'un eventuel message. Les exceptions, les codes d'erreurs transmettent une description logique du probleme. Si l'utilisateur veut le formater, il s'en occupe tout seul comme un grand (on peut prevoir dans la bibliotheque un moyen de le faire, mais c'est un service separe des exceptions et des codes d'erreurs).
OK, c'est bien ce que je pensais...
Merci
Jean-Marc Bourguet
Michael <michael.at.gmail.dot.com> writes:
Je ne comprends pas très bien ce que tu entends par appellant... L'utilisateur de la bibliothèque?
Oui.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Michael <michael.at.gmail.dot.com> writes:
Je ne comprends pas très bien ce que tu entends par appellant...
L'utilisateur de la bibliothèque?
Oui.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Je ne comprends pas très bien ce que tu entends par appellant... L'utilisateur de la bibliothèque?
Oui.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org