Se hai solo bisogno di aggiungere informazioni all'eccezione originale, come un messaggio leggibile dall'utente o dettagli specifici che ti saranno utili nel rintracciare l'errore ma che non saranno utili all'utente finale, tu può fare uso della proprietà Data di Exception, che è un dizionario chiave/coppia di valori.
Questo viene ampiamente utilizzato per registrare informazioni come il report in esecuzione o il file che viene elaborato in modo che le operazioni possano determinare esattamente cosa stava accadendo al momento dell'errore. L'utente non ha bisogno di questo dettaglio poiché sta lavorando direttamente con la causa dell'errore.
Si potrebbe anche usare questo per passare un messaggio di testo normale che abbia senso per l'utente. L'unico problema è che dovrai eseguire un lavoro aggiuntivo nel tuo framework di registrazione o nell'interfaccia utente finale per estrarre i dati e renderli utili per il consumatore.
Per esempio, si potrebbe fare:
catch (Exception ex)
{
ex.Data.Add("UserMessage", "An error occurred while trying to load the XSLT file.");
throw;
}
Poi nel codice lato client, si potrebbe verificare se UserMessage esiste e, in caso affermativo, presente all'utente invece che l'eccezione:
catch (Exception ex)
{
if (ex.Data.Contains("UserMessage"))
{
MessageBox.Show(ex.Data["UserMessage"].ToString());
}
else
{
MessageBox.Show(ex.Message);
}
}
fonte
2013-01-19 01:28:02
Aggiungere l'eccezione originale come un 'InnerException' sul' FatalException'? –
È alla fine di 'lanciare nuove FatalException (" messaggio ", ex)'. – krillgar
Perché vorresti fare ciò che stai mostrando? Prendi solo eccezioni con cui puoi fare qualcosa. Altrimenti lasciali gonfiare. – Mark