Exception

Résolu
babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015 - 23 oct. 2007 à 09:39
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 23 oct. 2007 à 09:52
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

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
23 oct. 2007 à 09:52
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# 
3
Rejoignez-nous