Mi piacerebbe suggerirvi che se non sapete cosa fare con un'eccezione, non prenderla. Troppo spesso, i programmatori catturano le eccezioni e li inghiottono completamente.
catch (Exception ex)
{
/* I don't know what to do.. *gulp!* */
}
Chiaramente questo non è buono, perché le cose brutte stanno accadendo e non viene intrapresa alcuna azione. Raccogli solo eccezioni che sono perseguibili!
Detto questo, la gestione degli errori aggraziata è importante. Non vuoi che la tua app si arresti, giusto? È possibile trovare ELMAH utile per le applicazioni Web e un gestore di eccezioni globale è piuttosto semplice da configurare per le app desktop WinForms o XAML.
Mettendo tutto insieme, si potrebbe trovare utile questa strategia: 1. rilevare le eccezioni specifiche che si possono verificare (DivideByZeroException, SQLException, ecc.) E allontanarsi dall'eccezione generica catch-all; 2. controrilanciare l'eccezione dopo averla gestita. per esempio.
catch (SQLException ex)
{
/* TODO: Log the error somewhere other than the database... */
throw; // Rethrow while preserving the stack trace.
}
Cosa si può veramente fare con un SQLException? La connessione al database è scomparsa? È stata una brutta ricerca? Probabilmente non vuoi aggiungere tutta la logica di gestione per questo, e inoltre, cosa succede se è qualcosa che non ti aspetti? Quindi, gestisci l'eccezione, se possibile, controrilanciare a meno che tu non sia sicuro che sia risolto e gestirlo con garbo a livello (es. Mostra un messaggio del tipo "Qualcosa è andato storto, ma potresti Informazioni dettagliate: "[Es. messaggio]." Annulla o riprova? ")
HTH!
John Saunders, grazie per la correzione.
fonte
2010-04-08 12:58:05
sembra che tu ritenga obbligatorio aggiungere try/catch ovunque. Forse puoi condividere con noi ciò che sai di questa affermazione in modo da poter chiarire il concetto. –
prendi un barattolo di vetro e fai dei buchi nel coperchio ;-) –
Eccezioni: devi prenderli tutti! – CiscoIPPhone