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 :

Problème d'exception personnalisée


Sujet :

C#

Vue hybride

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

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 535
    Par défaut Problème d'exception personnalisée
    Bonjour tout le monde,

    J'ai du loupé une étape mais impossible de trouver où !

    Je me suis créé une exception personnalisée dont voici le code:

    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
     
    using System;
    using System.Runtime.Serialization;
     
    namespace WindowsFormsApplication1
    {
     
    	[Serializable]
    	public class PapyException : Exception
    	{
     
    		public PapyException(String message)
    			: base(message) { }
     
    		public PapyException(String message, Exception exception)
    			: base(message, exception) { }
     
    		protected PapyException(SerializationInfo serializationInfo, StreamingContext streamingContext)
    			: base(serializationInfo, streamingContext) { }
     
    		public PapyException(String message, int level, bool verbose)
    		{
    			DoPapyException(message, level, verbose);
    		}
     
    		public PapyException()
    			: this("undefined exception", 2, false) { }
     
    		public void DoPapyException(String message, int level, bool verbose)
    		{
    			if (verbose)
    			{
    				switch (level)
    				{
    					case 1:
    						break;
    					case 2:
    						System.Windows.Forms.MessageBox.Show(level.ToString() + " " + message);
    						break;
    					case 3:
    						break;
    					case 4:
    						System.Windows.Forms.MessageBox.Show(level.ToString() + " " + message);
    						break;
    					case 5:
    						System.Windows.Forms.MessageBox.Show(level.ToString() + " " + message);
    						break;
    					default:
    						break;
    				}
    			}
    		}
     
    	}
     
    }

    Voici le code de test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void button1_Click(object sender, EventArgs e)
    {
    	try
    	{
    		throw new PapyException("on essaye", 2, true);
    	}
    	catch (PapyException exc)
    	{
    		MessageBox.Show(exc.Message);				
    	}
    }

    Mon problème est le suivant: Quand je déclenche cette exception, j'ai bien le message passé dans le constructeur avec le bon "level". Ma procédure DoPapyException fonctionne donc bien. Mais tout de suite après, une seconde boite de dialogue s'affiche et m'indique :

    Une exception de type 'WindowsFormsApplication1.PapyException' a été levée.
    Pourquoi donc ce double message ?

    Merci d'avance de votre aide !

    Papy !

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    parce que tu as codé dans ton exception d'afficher un messagebox
    puis dans le catch tu as remis un messagebox
    non ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre Expert

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 535
    Par défaut
    le MessageBox déclencherait lui-même une exception ?

    Le problème c'est que le message affiché n'a rien à voir avec ce que je lui demande. Comme si l'exception n'était pas détruite automatiquement après que je l'ai lancée et récupérée dans le catch. :-(

  4. #4
    Membre Expert

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 535
    Par défaut
    arf, j'ai trouvé ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public PapyException(String message, int level, bool verbose)
      : base()
    {
      DoPapyException(message, level, verbose);
    }

    J'avais oublié l'appel au constructeur de l'ancêtre.

    C'est résolu, merci :-)

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu ne devrais jamais avoir un MessageBox.Show dans le code de l'exception, ce n'est pas sa responsabilité mais celle du code qui intercepte l'exception.

  6. #6
    Membre Expert

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 535
    Par défaut
    En fait, le MessageBox n'est censé être utilisé qu'en mode debug dans mon code, selon la valeur du paramètre verbose dans l'appel de la fonction :-)

    Sinon, oui, je suis bien conscient que ce MessageBox n'a rien à faire ici dans un contexte "normal". :-)

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

Discussions similaires

  1. probléme d'exception dans un formulaire
    Par minie dans le forum Struts 1
    Réponses: 2
    Dernier message: 05/06/2007, 12h11
  2. Problème d'exception MySql
    Par Derek80 dans le forum Visual C++
    Réponses: 1
    Dernier message: 12/04/2007, 23h39
  3. Problème Socket Exception
    Par Royd938 dans le forum Langage
    Réponses: 6
    Dernier message: 28/11/2006, 12h18
  4. [SimpleDateFormat] problème d'exception
    Par julienOriano dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 12/07/2004, 18h01

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