Exception [Résolu]

Signaler
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
Bonjour,

j'ai définie une méthode "MethodeA" qui génère des exceptions que j'ai définie  dont voici la description :

public
class
ExceptionNoRecordFound :
ApplicationException
{

   public ExceptionNoRecordFound()
   {
   }
}

public
class
ExceptionManyRecordFound :
ApplicationException
{

   public ExceptionManyRecordFound()
   {
   }   
}   

dans ma méthode "MethodeA" j'appelle ces exceptions de la manière suivante :

if (dataTable.Rows.Count > 1)
throw
new
ExceptionManyRecordFound();

if (dataTable.Rows.Count < 1)
throw
new
ExceptionNoRecordFound();

Mon problème est que lorsque je trappe les exceptions dans une méthode appelante "MethodeB" sans me soucier des exceptions décrites ci dessus, j'ai un message "Erreur de l'application".

private void MethodeB()
try

   {
      MethodeA();
   }

catch(
Exception ex)
   {
   MessageBox.show (ex.message) ; // Affiche "Erreur de l'application"
   }

Je suis d'accord que pour le bon fonctionnement je devrais faire un catch sur ExceptionManyRecordFound et sur ExceptionNoRecordFound

mais n'y a t il pas un moyen pour en plus initialiser le ex.message avec un message plus explicite car je n'ai pas toujours besoin de tester les ExceptionManyRecordFound et ExceptionNoRecordFound

Merci

DT

1 réponse

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Salut,

Tu peux surcharger ton constructeur afin qu'il prenne un message personnalisé en paramètre
Par exemple :

<hr />

public
class
ExceptionNoRecordFound :
ApplicationException
{

   public ExceptionNoRecordFound()
   {
   }

   public ExceptionNoRecordFound(
string message)
               :
base(message)
   {
   }
}
<hr />
Et tu appeles la 2eme version du constructeur avec ton message d'erreur.

Mx
MVP C#