Programmation » les exceptions - quels sont les règles ?
Catégorie:  
   
les exceptions - quels sont les règles ?
Publié le 30/12/2006 @ 17:30:53,
Par Altar
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 ^^
   
les exceptions - quels sont les règles ?
Publié le 30/12/2006 @ 18:06:13,
Par rfr
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.
To die is a time consuming activity, it often takes a lifetime (but some are faster than others ... though)
   
les exceptions - quels sont les règles ?
Publié le 30/12/2006 @ 18:25:55,
Par Altar
Heu d'accord mais ton MyHornyException, il sort d'où ? :oh:
   
les exceptions - quels sont les règles ?
Publié le 30/12/2006 @ 18:54:47,
Par rfr
Heu d'accord mais ton MyHornyException, il sort d'où ? :oh:


Bah, c'est une classe comme les autres ...
To die is a time consuming activity, it often takes a lifetime (but some are faster than others ... though)
   
les exceptions - quels sont les règles ?
Publié le 30/12/2006 @ 19:01:14,
Par rfr
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();
};



Dernière édition: 30/12/2006 @ 19:19:21
To die is a time consuming activity, it often takes a lifetime (but some are faster than others ... though)
   
les exceptions - quels sont les règles ?
Publié le 30/12/2006 @ 19:02:42,
Par Altar
C'est le throw va s'occuper de créer une instance de la classe :oh: ?
   
les exceptions - quels sont les règles ?
Publié le 30/12/2006 @ 19:18:17,
Par rfr
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.
To die is a time consuming activity, it often takes a lifetime (but some are faster than others ... though)
   
les exceptions - quels sont les règles ?
Publié le 30/12/2006 @ 19:20:29,
Par Altar
Okey maintenant j'ai compris :itm:
Répondre - Catégorie:  
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?