View Full Version : [C#] Come prendere l'errore generato da un try catch
robertino_salemi
24-10-2013, 10:04
Salve a tutti,
ho questa funzione:
public static string nomefunzione(string nomefile)
{
string result = string.Empty;
try
{
....
string result = "risultato"
...
catch (Exception ex)
{
Session.ReportError(ex);
return ex.InnerException.ToString();
}
return result;
}
Non riesco a farmi restituire l'errore generato dall'eccezione!
Come dovrei scriverlo?
Grazie.
Riordian
24-10-2013, 10:21
Salve a tutti,
ho questa funzione:
public static string nomefunzione(string nomefile)
{
string result = string.Empty;
try
{
....
string result = "risultato"
...
catch (Exception ex)
{
Session.ReportError(ex);
return ex.InnerException.ToString();
}
return result;
}
Non riesco a farmi restituire l'errore generato dall'eccezione!
Come dovrei scriverlo?
Grazie.
In un eccezione la descrizione dell'errore è la prop Message. devi scrivere
return ex.Message al poso di return ex.InnerException.ToString()
robertino_salemi
24-10-2013, 10:27
Esatto, ma
- return ex.Message mi da solo un massaggio generico, in questo caso "Metodo non implementato"
- return ex.InnerException mi da il dettaglio
Questo lo vedo dal watch in fase di debug.
Riordian
24-10-2013, 10:42
Esatto, ma
- return ex.Message mi da solo un massaggio generico, in questo caso "Metodo non implementato"
- return ex.InnerException mi da il dettaglio
Questo lo vedo dal watch in fase di debug.
è la stessa cosa: ex.InnerException.Message ;) InnerException è sempre di Tipo exception, ma controlla però che sia diversa da null prima di prenderne il Message
robertino_salemi
24-10-2013, 12:14
Esatto, grazie!
tomminno
24-10-2013, 13:09
Salve a tutti,
ho questa funzione:
public static string nomefunzione(string nomefile)
{
string result = string.Empty;
try
{
....
string result = "risultato"
...
catch (Exception ex)
{
Session.ReportError(ex);
return ex.InnerException.ToString();
}
return result;
}
Non riesco a farmi restituire l'errore generato dall'eccezione!
Come dovrei scriverlo?
Grazie.
Il metodo è fondamentalmente debole.
In caso di errore o di successo il risultato è sempre una stringa.
Come capire dall'esterno se c'è stato un errore?
In merito alla domanda InnerException può (e in molti casi lo è) essere null, pertanto hai un'ulteriore eccezione sollevata nel catch.
ex.ToString() ti restituisce tutta l'eccezione in formato stringa comprese tutte le eventuali InnerException e di tutti gli stack trace.
Se ti interessa solo il messaggio d'errore dell'eccezione più interna invece devi scorrere la "lista" di tutte le InnerException e andare a prendere l'ultima ovvero quella la cui InnerException è null.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.