Migliori pratiche o raccomandazioni sulla gestione delle eccezioni? [chiuso]


12

Penso che i due problemi principali con i miei programmi siano la mia struttura / organizzazione di codice e la mia gestione degli errori. Sto leggendo Code Complete 2, ma ho bisogno di qualcosa da leggere per lavorare con potenziali problemi.

Ad esempio, su un sito Web, se qualcosa può succedere solo se l'utente manomette i dati tramite javascript, scrivi per quello? Inoltre, quando non si rilevano errori? Quando scrivi una classe che si aspetta una stringa e un int come input, e non sono una stringa e un int, lo controlli o lo lasci passare al metodo di chiamata che ha passato parametri errati?

So che questo è un argomento ampio a cui non è possibile rispondere in un'unica risposta qui, quindi quello che sto cercando è un libro o una risorsa che è comunemente accettato come insegnamento della corretta pratica di gestione delle eccezioni.


1
quale lingua e piattaforma di sviluppo stai usando?
Yusubov,

1
Penso che "Clean code" abbia un buon capitolo su questo problema
Hoàng Long,

Cosa ha detto @ElYusubov. I dettagli e gli standard di implementazione del linguaggio / della piattaforma con cui hai a che fare hanno molto a che fare con le migliori pratiche.
Vaughandroid,

Risposte:


12

Una delle cose positive da ricordare è eseguire la gestione delle eccezioni when there is a need.

Per la piattaforma di sviluppo .NET basta seguire le linee guida MSDN - Best practice per la gestione delle eccezioni , oltre a consultare questo simpatico articolo sul progetto di codice - Eccezione per la gestione delle best practice in .NET

Tuttavia, le seguenti linee guida sono per lo più vere per qualsiasi piattaforma di sviluppo:

  • Non gestire la logica aziendale con eccezioni. Utilizzare invece le istruzioni condizionali. Se un controllo può essere eseguito chiaramente con l'istruzione if-else, non utilizzare le eccezioni perché riduce la leggibilità e le prestazioni (ad es. Controllo null, divisione per controllo zero). .

  • I nomi delle eccezioni devono essere chiari e significativi, indicando le cause dell'eccezione.

  • Generare eccezioni per le condizioni di errore durante l'implementazione di un metodo. Ad esempio, se si restituiscono valori -1, -2, -3 ecc. Anziché FileNotFoundException, tale metodo non può essere compreso.

  • Cattura eccezioni specifiche anziché la classe di eccezione superiore. Ciò porterà ulteriori prestazioni, leggibilità e una gestione delle eccezioni più specifica.

  • Il controllo null con i condizionali non è un'alternativa alla cattura di NullPointerException. Se un metodo può restituire null, controllarlo con l'istruzione if-else. Se un reso può generare NullPointerException, rilevalo.

  • Cerca di non respingere l'eccezione a causa del prezzo. Bu se il rilancio era stato un must, rilancia la stessa eccezione invece di crearne una nuova. Ciò porterà prestazioni aggiuntive. È possibile aggiungere ulteriori informazioni in ogni livello a tale eccezione.

  • Definisci la tua gerarchia di eccezioni estendendo l'attuale classe di eccezioni (ad esempio UserException, SystemException e i loro sottotipi) e usali. In questo modo puoi specializzare le tue eccezioni e definire un modulo / livello riutilizzabile di eccezioni. più da seguire in questo link


2
Alcuni buoni punti generali, anche se non credo che il tuo quinto punto ("Controllo nullo con condizionali ...") sia molto chiaro.
Vaughandroid,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.