Poster une réponse à un sujet: les exceptions - quels sont les règles ?
Attention, ce sujet est un sujet ancien (6571 jours sans réponse)
Gras [b]Texte[/b] Italique [i]Italique[/i] Souligné [u]Souligné[/u] Barré [strike]Barré[/strike]
Courriel [email=nobody@nobody.org]Nom[/email] Lien [url=http://www.website.com]Texte[/url] Ancre [anchor]Nom[/anchor] Image [img]http://www.website.com/image.jpg[/img] Insérer une image en provenance du site
Aligné à gauche [align=left]Texte[/align] Centré [align=center]Texte[/align] Aligné à droite [align=right]Texte[/align] Toute la largeur [align=justify]Texte[/text]
Couleur [color=#000000]Text[/color] Mise en forme [highlight=pascal]Texte[/highlight] Widgets Emoticons :code: [:code] Convertisseur HTML vers BBCode Convertisseur Word vers BBCode
Prévisualisation Vérification de l'orthographe

Copier Coller Couper Tout sélectionner
Tout effacer Insérer la date Insérer l'heure Insérer la date et heure Insérer votre IP
Liste [list=square][item]BlaBla[/item][/list] Liste Numérotée [list=decimal][item]BlaBla[/item][/list]
Citation [quote=name]Texte[/quote] Spoiler [spoiler]James est le meurtrier![/spoiler]
Tout en majuscules [uppercase]Texte[/uppercase] Tout en minuscules [lowercase]Texte[/lowercase] l33t [l33t]Je suis un nerd[/l33t] Texte en indice [sub]Texte[/sub] Texte en exposant [sup]Texte[/sup] Taille du texte [size=8]Texte[/size]
 
Altar
Okey maintenant j'ai compris :itm:
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.
Altar
C'est le throw va s'occuper de créer une instance de la classe :oh: ?
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();
};


rfr
Heu d'accord mais ton MyHornyException, il sort d'où ? :oh:


Bah, c'est une classe comme les autres ...
Altar
Heu d'accord mais ton MyHornyException, il sort d'où ? :oh:
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.
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 ^^
Catégorie:  






Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?