Je me demande quelle est la bonne façon de transmettre une exception d'une méthode à mon formulaire.
public void test()
{
try
{
int num = int.Parse("gagw");
}
catch (Exception)
{
throw;
}
}
Forme:
try
{
test();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
de cette façon, je ne peux pas voir ma zone de texte.
Si vous voulez juste le résumé de l'exception, utilisez:
try
{
test();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Si vous voulez voir toute la trace de la pile (généralement préférable pour le débogage), utilisez:
try
{
test();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Une autre méthode que j’utilise parfois est la suivante:
private DoSomthing(int arg1, int arg2, out string errorMessage)
{
int result ;
errorMessage = String.Empty;
try
{
//do stuff
int result = 42;
}
catch (Exception ex)
{
errorMessage = ex.Message;//OR ex.ToString(); OR Free text OR an custom object
result = -1;
}
return result;
}
Et dans votre formulaire, vous aurez quelque chose comme:
string ErrorMessage;
int result = DoSomthing(1, 2, out ErrorMessage);
if (!String.IsNullOrEmpty(ErrorMessage))
{
MessageBox.Show(ErrorMessage);
}
Il y a plusieurs façons, par exemple:
Méthode 1:
public string test()
{
string ErrMsg = string.Empty;
try
{
int num = int.Parse("gagw");
}
catch (Exception ex)
{
ErrMsg = ex.Message;
}
return ErrMsg
}
Méthode deux:
public void test(ref string ErrMsg )
{
ErrMsg = string.Empty;
try
{
int num = int.Parse("gagw");
}
catch (Exception ex)
{
ErrMsg = ex.Message;
}
}
try
{
// your code
}
catch (Exception w)
{
MessageDialog msgDialog = new MessageDialog(w.ToString());
}