Sujet: les exceptions - quels sont les règles ?
30/12/2006 @ 17:30:53: Altar: les exceptions - quels sont les règles ?
Alors pour ne pas trop faire n'importe comment, je me demandais s'il y avait une ligne de conduite à adopter quand on veut implémenter des exceptions correctement (ici en c++ mais ça doit être de même en java et tout langage OO) ?

Exemple une classe doit avoir sa classe d'exception et toutes les exceptions possibles pour cette classe doivent être contenue dans celle-ci ou plutôt faire un polymorphisme pour chacune des exceptions ? Je prends toutes les idées et la documentation que vous pourriez avoir :oh: Merci ^^
30/12/2006 @ 18:06:13: rfr: les exceptions - quels sont les règles ?
De mon expérience, les exceptions c'est le bien et le mal ... Trop de type d'exception tue l'exception :oh:

Bien sur, pour un programme donné, il faut toujours avoir une exception de base, les autres exceptions en derivent ce qui facilite les clauses try/catch.

Je soutiens que l'on peut très bien n'utiliser qu'une seule type d'exception. Par contre, ce qui me semble super utile c'est de pouvoir contenir une exception dans une autre, dans le cas ou l'exception en génère une nouvelle. On peut alors voir la stack des exceptions, ce qui facilite le debugging.

Autre chose, on peut aussi donner des codes aux erreurs qui est alors contenu dans l'exception. Ca permet par exemple de faciliter l'internationalisation et les messages par défaut.

Pour l'utilisation, ne jamais lancer une exception crée sur la heap (pas de new donc). En gros, on fait:

try {

throw MyHornyException("MODCOD501: You are so horny... (default message)");
} catch (MyHornyException & _ex) {
string code = _ex.getMessageCode();
}


My 2 cents ... mais c'est comme ça que je trouve les exceptions les plus facile à gérer sans surmultiplier le nombre de classe d'exception.
30/12/2006 @ 18:25:55: Altar: les exceptions - quels sont les règles ?
Heu d'accord mais ton MyHornyException, il sort d'où ? :oh:
30/12/2006 @ 18:54:47: rfr: les exceptions - quels sont les règles ?
Heu d'accord mais ton MyHornyException, il sort d'où ? :oh:


Bah, c'est une classe comme les autres ...
30/12/2006 @ 19:01:14: rfr: les exceptions - quels sont les règles ?
Bah, c'est une classe comme les autres ...



class Exception
{
private:
string & message;
Exception & baseException;
public:
Exception(string & message);
Exception(Exception & base, string & message);


virtual ~Exception();
};

class MyHornyException : public Exception
{
public:
MyHornyException(string & message);
MyHornyException(Exception & base, string & message);

virtual ~MyHornyException();
};


30/12/2006 @ 19:02:42: Altar: les exceptions - quels sont les règles ?
C'est le throw va s'occuper de créer une instance de la classe :oh: ?
30/12/2006 @ 19:18:17: rfr: les exceptions - quels sont les règles ?
Ben sans new, ton exception est déclarée sur la stack. Le compilateur s'occupe de la destruction de l'instance quand plus personne n'en a besoin.
30/12/2006 @ 19:20:29: Altar: les exceptions - quels sont les règles ?
Okey maintenant j'ai compris :itm:
Retour