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#

  1. #1
    Membre émérite

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    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 : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Points : 627
    Points
    627
    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 éprouvé
    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
    Points : 1 177
    Points
    1 177
    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") {}
    }
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  5. #5
    Membre émérite

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    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 confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Points : 627
    Points
    627
    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).

  7. #7
    Membre émérite

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999
    Par défaut c'était donc ça
    Attribute ... le mot clé qui me manquait pour chercher des détails la-dessus.
    Merci une nouvelle fois

+ 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