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# Discussion :

exception et génération de code


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 527
    Par défaut exception et génération de code
    Bonjour d'un nouvel utilisateur C#,

    Sur le mot exception, la génération de code sous VSE me génère le code suivant:

    [global::System.Serializable]
    public class MyException : Exception
    {
    public MyException() { Exception.Message = "je suis une erreur"; }
    public MyException(string message) : base(message) { }
    public MyException(string message, Exception inner) : base(message, inner) { }
    protected MyException(
    System.Runtime.Serialization.SerializationInfo info,
    System.Runtime.Serialization.StreamingContext context)
    : base(info, context) { }
    }

    Première question: où pourrais-je trouver une explication sur ce [global::System.Serializable] que je ne comprends pas ?

    Deuxième question:
    Je cherche comment créer une exception personnalisée avec un message par défaut défini dans la classe.
    En Delphi, je change le contenu du message dans le constructeur par défaut.
    Avec C#, ça ne semble pas fonctionner. La propriété base.message est en lecture seule.

    Est-ce que quelqu'un aurait un exemple de code ?

    Merci d'avance,

    J-L

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    Deuxième question:
    Je cherche comment créer une exception personnalisée avec un message par défaut défini dans la classe.
    En Delphi, je change le contenu du message dans le constructeur par défaut.
    Avec C#, ça ne semble pas fonctionner. La propriété base.message est en lecture seule.
    Tu fais une classe qui hérite de Exception. Fais une recherche sur le net la-dessus

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Pour la premiere question, Serializable indique au framework que ta classe est serialisable (sic), System.Serializable etant une sorte d'alias pour System.SerializableAttribute.

    Plus d'infos.

  4. #4
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    Pour faire simple :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class MyException : Exception
    {
      public MyException() : this ("Message par défaut") {}
      public MyException(string Message) : base (Message) {}
    }

    Si tu ne veux QUE le constructeur sans le message en argument, on peut faire ceci :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class MyException : Exception
    {
      public MyException() : base ("Message par défaut") {}
    }

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 527
    Par défaut impecc' pour la personalisation du message d'erreur
    Thomas: J'ai bien cherché et tenté des trucs avant de venir ici mais rien trouvé de concluant.

    SirJulio: Ce n'est pas tant le mot Serializable qui me pose problème que le
    [global::System.Serializable] en entier. Ce que je n'ai pas compris, ce sont les [] et la syntaxe de cette ligne. Je me dis que ça doit agir sur la classe qui suit juste cette ligne mais je n 'ai pas trouvé d'explication dans la msdn.

    neilbgr: ok, moi j'atais parti pour renseigner du code entre les {}. Merci pour cet exemple tout simple.

    pour tous: Désolé de faire un peu newb', mais ça va être mon cas pour quelques temps encore :-)

    Merci à tous

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Les [], c'est la syntaxe pour utiliser un attribute. Ces attributs peuvent faire un peu tout et n'importe quoi (ici indiqué que la classe est serializable, d'autres peuvent servir à importer des fonctions c (DLLImport), d'autres encore peuvent etre consommé au debug pour changer la representation d'une intance d'un type). Ils peuvent agir sur des membres, des classes, des assemblies complets, ca depend.

    Global sert à eviter un conflit de nommage si tu as deja un namespace System et que tu appelles dedans. Ce n'est pas vraiment important (à moins que tu maques des ns existants).

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

Discussions similaires

  1. Génération de code & bpm4struts
    Par k4eve dans le forum BPM
    Réponses: 3
    Dernier message: 08/03/2007, 15h12
  2. Modelisation UML / Génération de code C++ sous eclipse
    Par silverhawk.os dans le forum Eclipse C & C++
    Réponses: 5
    Dernier message: 03/01/2006, 00h15
  3. [UML] génération de code avec omondo.uml
    Par RENAULT dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 31/10/2003, 13h14
  4. [Lomboz] Génération de code pour EJB
    Par paikan dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/07/2003, 14h28

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