gestione delle eccezioni filosofia io sono sicuro che potete trovare molte altre filosofie
Codice sulla difensiva. Le eccezioni di cattura sono più costose che evitare l'errore in primo luogo.
Non prendere un'eccezione e seppellirla non trattandola. Puoi passare molte ore a cercare di trovare un errore che è stato soppresso.
Registra errori di registro. Questo aiuta ad analizzare il problema.È possibile verificare se più di un utente ha lo stesso problema Preferisco un database per la registrazione, ma sono adatti anche un file flat o il registro eventi. La soluzione di database è più semplice da analizzare ma può introdurre errori aggiuntivi.
Se l'errore è dovuto a dati errati inseriti dall'utente, informare l'utente del problema e consentire di riprovare. Consentire sempre una via di fuga se non è possibile risolvere il problema.
Cattura l'errore il più vicino possibile alla sorgente Questa potrebbe essere una procedura di database, un metodo in un livello di accesso ai dati (DAL) o in un'altra posizione.
La gestione dell'eccezione è diversa dalla cattura. Potrebbe essere necessario rilanciare l'eccezione in modo che possa essere gestita più in alto nello stack o nell'interfaccia utente.
Il richiamo dell'eccezione può essere effettuato in almeno due modi. da solo non altera la pila. ex throw altera o aggiunge allo stack senza alcun beneficio.
A volte è meglio non rilevare un'eccezione, ma piuttosto farla esplodere.
Se si scrivono servizi (Web o Windows) che non dispongono di un'interfaccia utente (UI), è necessario registrare sempre l'errore. Ancora, questo è così che qualcuno può analizzare il log o il file di database per determinare cosa sta succedendo.
Vuoi sempre che qualcuno sappia che si è verificato un errore.
Avere molte istruzioni catch per un blocco try può rendere il vostro codice più difficile da mantenere, specialmente se la logica nei blocchi catch è complessa. Invece, codice in modo difensivo.
Ricorda che puoi provare a catturare blocchi all'interno dei blocchi di cattura.
Inoltre, non dimenticare di utilizzare il blocco finally dove appropriato. Per esempio, chiudendo le connessioni al database, o handle di file, ecc
HTH Harv
Se 'list' è nullo,' outputDictionaryContentsByDescending' dovrebbe lanciare 'ArgumentNullException' –