IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Créer ses propres exceptions


Sujet :

C++Builder

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut Créer ses propres exceptions
    Bonjour à tous,

    je cherche le moyen de créer mais surtout d'utiliser mes propres excpetion.
    Evidément la doc du BDS2006 ne donne des exemple que pour delphi utilisant le mot clef raise. Or ce n'est pas un mot clef du C++, du coup j'ai un peu farfouillé dans la FAQ et sur sans grand succès.

    Quelqu'un pourrait il me donner un tuyau ?

    Merci d'avance,

    Neilos
    Neilos

  2. #2
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Perso j'aurais dis throw...
    D'ailleurs, je viens de lire qq lignes a ce sujet ici
    et j'espère que cela peut correspondre a ce que tu cherchais...
    @+

    //edit :
    je n'ai pas - comme tu le sais peut être - un grand niveau théorique, donc je suis peut être loin de ce que tu recherches
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Hello,

    effectivement le throw est bon. Par contre j'ai un peu de mal qd même :

    Je fais cela pour déclencher mon exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ( deleted )
    		throw new EOperationOnDeletedItem("Opération sur un festival supprimé.");
    L'exception étant déclarée de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class EOperationOnDeletedItem : public Exception
    {
    	public:
    		EOperationOnDeletedItem( AnsiString message );
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    EOperationOnDeletedItem::EOperationOnDeletedItem( AnsiString message )
    {
    	Message = message;
    }
    Lors de la compilation j'ai droit aux erreures suivante :

    Ligne début du constructeur : "Impossible de trouver un constructeur par défaut pour la classe de base Exception"
    Bref ça marche pas et je me perd un peu...grrr je déteste l'aide du BDS !
    Neilos

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Citation Envoyé par L'aide BCB6
    Vous pouvez déclarer une nouvelle classe d'exception en créant un descendant de type Exception et en créant autant de constructeurs que nécessaire (ou en copiant les constructeurs depuis une classe existant dans Sysutils.hpp).
    Y'a plus qu'à

  5. #5
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonjour,
    Je me permet de poster un bout de code, bien que n'ayant pas encore la solution au problème posé; et ce, dans l'espoir que qqu'un finalement saura corriger mon erreur et me pemettre de comprendre le principe :
    dans le .cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    __fastcall EOI :: EOI(const AnsiString Msg) : Exception(Msg)
    {
            Message = Msg;
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void __fastcall TForm4::Button2Click(TObject *Sender)
    {
          throw new EOI("Opération sur un festival supprimé.");
    }
    dans le .h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class EOI : public Exception
    {
            typedef Exception inherited;
     
    public:
            __fastcall EOI(const AnsiString Msg);
    };
    ceci étant déclaré en amont de la déclaration de la TForm...
    J'obtiens, lorsque j'execute l'.exe et lance l'erreur : Externat error...

    Une ch'tite idée ?
    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  6. #6
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut, je viens de tomber sur ca qui pourrait peut être vous intéresser.

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Oui mais visiblement Neilos s'oriente vers les Exceptions de la VCL

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Effectivement, j'ai suivi l'indication de Ricky81 (oui parrain ça m'arrive d'obéir ) et ça marche bien. Il y a une bonne quantité de constructeurs mine de rien !

    Merci à tous pour votre aide, cela m'a l'air ok !
    Neilos

  9. #9
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Oki,
    Je me suis donc égaré....
    Quel est donc, au final, le code retenu ?
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class EOperationOnDeletedItem : public Exception
    {
    	public:
    	__fastcall EOperationOnDeletedItem(const AnsiString Msg);
    	__fastcall EOperationOnDeletedItem(const AnsiString Msg, System::TVarRec const * Args, const int Args_Size);
    	__fastcall EOperationOnDeletedItem(int Ident)/* overload */;
    	__fastcall EOperationOnDeletedItem(System::PResStringRec ResStringRec)/* overload */;
    	__fastcall EOperationOnDeletedItem(int Ident, System::TVarRec const * Args, const int Args_Size)/* overload */;
    	__fastcall EOperationOnDeletedItem(System::PResStringRec ResStringRec, System::TVarRec const * Args, const int Args_Size)/* overload */;
    	__fastcall EOperationOnDeletedItem(const AnsiString Msg, int AHelpContext);
    	__fastcall EOperationOnDeletedItem(const AnsiString Msg, System::TVarRec const * Args, const int Args_Size, int AHelpContext);
    	__fastcall EOperationOnDeletedItem(int Ident, int AHelpContext)/* overload */;
    	__fastcall EOperationOnDeletedItem(System::PResStringRec ResStringRec, int AHelpContext)/* overload */;
    	__fastcall EOperationOnDeletedItem(System::PResStringRec ResStringRec, System::TVarRec const * Args, const int Args_Size, int AHelpContext)/* overload */;
    	__fastcall EOperationOnDeletedItem(int Ident, System::TVarRec const * Args, const int Args_Size, int AHelpContext)/* overload */;
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    __fastcall EOperationOnDeletedItem::EOperationOnDeletedItem(const AnsiString Msg)
    	: Exception( Msg )
    {
     
    }
    __fastcall EOperationOnDeletedItem::EOperationOnDeletedItem(const AnsiString Msg,
    				 System::TVarRec const * Args, const int Args_Size) :
    				 	Exception( Msg, Args, Args_Size )
    {
     
    }
     
    __fastcall EOperationOnDeletedItem::EOperationOnDeletedItem(int Ident) :
    					Exception( Ident )
    {
     
    }
    __fastcall EOperationOnDeletedItem::EOperationOnDeletedItem(
    											System::PResStringRec ResStringRec) :
    												Exception( ResStringRec )
    {
     
    }
     
    __fastcall EOperationOnDeletedItem::EOperationOnDeletedItem(int Ident,
    														System::TVarRec const * Args,
    														const int Args_Size) :
    						Exception( Ident, Args, Args_Size )
    {
     
    }
     
    __fastcall EOperationOnDeletedItem::EOperationOnDeletedItem(
    					System::PResStringRec ResStringRec, System::TVarRec const * Args,
    					const int Args_Size) :
    						Exception( ResStringRec, Args, Args_Size )
    {
     
    }
     
    __fastcall EOperationOnDeletedItem::EOperationOnDeletedItem(const AnsiString Msg,
    						 int AHelpContext) : Exception( Msg, AHelpContext )
    {
     
    }
     
    __fastcall EOperationOnDeletedItem::EOperationOnDeletedItem(const AnsiString Msg,
    						 System::TVarRec const * Args,
    						 const int Args_Size,
    						 int AHelpContext) :
    						 Exception( Msg, Args, Args_Size, AHelpContext )
    {
     
    }
     
    __fastcall EOperationOnDeletedItem::EOperationOnDeletedItem(int Ident,
    																		int AHelpContext) :
    													Exception( Ident, AHelpContext )
    {
     
    }
     
    __fastcall EOperationOnDeletedItem::EOperationOnDeletedItem(
    											System::PResStringRec ResStringRec,
    											int AHelpContext) :
    											Exception( ResStringRec,
    															AHelpContext )
    {
     
    }
     
    __fastcall EOperationOnDeletedItem::EOperationOnDeletedItem(
    										System::PResStringRec ResStringRec,
    										System::TVarRec const * Args,
    										const int Args_Size,
    										int AHelpContext) :
    										Exception( ResStringRec, Args, Args_Size,
    														AHelpContext )
    {
     
    }
     
    __fastcall EOperationOnDeletedItem::EOperationOnDeletedItem(int Ident,
    														 System::TVarRec const * Args,
    														 const int Args_Size,
    														 int AHelpContext) :
    										Exception( Ident, Args, Args_Size, AHelpContext )
     
    {
     
    }
    Beaucoup de code pour pas grand chose !
    Neilos

  11. #11
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Oki merci....je ne voyais pas du tout les choses comme ça...
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer ses propres exceptions
    Par dr_anas dans le forum C#
    Réponses: 2
    Dernier message: 08/04/2013, 14h59
  2. [JNI] creer ses propres exceptions
    Par Batou dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 23/08/2006, 04h01
  3. [Struts][Validator] : créer ses propre validator
    Par anaon dans le forum Struts 1
    Réponses: 3
    Dernier message: 10/05/2006, 07h19
  4. [Struts]créer ses propres tag struts
    Par jeb001 dans le forum Struts 1
    Réponses: 3
    Dernier message: 08/09/2005, 19h56
  5. Programme permettant de créer ses propres paquets TCP/UDP
    Par mat087 dans le forum Développement
    Réponses: 6
    Dernier message: 21/05/2004, 21h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo