Migliorare la gestione delle eccezioni? [duplicare]

3

Sono un programmatore novizio e recentemente ho iniziato a studiare la gestione delle eccezioni in Java.

So cosa provare, catturare e infine blocchi, ma ho davvero bisogno di capire come usarli bene e dove gestire qualcosa nello stack delle chiamate ...

In questo momento ho un progetto che riguarda l'I / O e tutto quello che sto facendo è gestire l'eccezione nel metodo più basso possibile nello stack delle chiamate.

Sono sicuro che la mia gestione delle eccezioni può essere migliorata, quindi ti sto chiedendo ragazzi come pensate di gestire le eccezioni?

Come siete diventati bravi ragazzi e come potrò meglio comprendere questa idea?

    
posta claudio 17.02.2011 - 14:10
fonte

2 risposte

4

Le eccezioni non rilevate riguardano la gestione dei problemi esterni, le eccezioni rilevate per interni

In generale, le eccezioni rilevate (nel blocco try-catch-finally ) riguardano problemi a cui l'applicazione può fare qualcosa. Le eccezioni Uncaught, o runtime, sono per problemi che non rientrano nell'ambito della tua applicazione per risolvere da solo (puntatore nullo, errore di connessione al database e così via). In genere un'eccezione di runtime indica un punto debole del sistema che un amministratore o uno sviluppatore deve affrontare.

Quando scegliere un'eccezione non rilevata

Scegli un'eccezione di runtime quando sai che nessuno più in alto nello stack delle chiamate sarà in grado di recuperare senza un nuovo tentativo.

"The database connection is borked. This application is not going to be able to restart it since it'll have been provided by JNDI. This application should stop attempting database access right now."

Quando scegliere un'eccezione catturata

Scegli un'eccezione rilevata quando sai che il ripristino è possibile con un po 'di manipolazione dei dati dal chiamante.

"Hey, I got a ParseException, guess I'll add in the time field since it was missing. Should've checked that beforehand..."

Nel complesso, cerca di mantenere le eccezioni ben definite già nella lingua (meno codice da condividere e spiegare). Capire perché sono presi o non catturati. Se devi assolutamente creare la tua eccezione, prova a mantenere basso il numero di variazioni e a renderti utile nel riportare esattamente cosa è andato storto. Considera di eseguire il backup dell'eccezione con una voce di registro dettagliata, se possibile.

    
risposta data 17.02.2011 - 14:18
fonte
2

Non una risposta diretta, ma una buona pratica: assicurati che quando rilevi ed eccezione e lanci un'altra eccezione, passi l'eccezione originale come argomento a quella nuova. Java può mantenere utili catene di "causate da" ed è molto facile rompere queste catene semplicemente lanciando un'eccezione completamente nuova.

    
risposta data 18.02.2011 - 01:38
fonte

Leggi altre domande sui tag