Nella maggior parte dei casi, è possibile rilevare eccezioni in Java, anche se non selezionate. Ma non è necessariamente possibile fare qualcosa al riguardo (ad esempio, fuori dalla memoria).Quando si dovrebbe arrestare un'applicazione a causa di un'eccezione in Java (problema di progettazione)?
In altri casi, il problema che sto cercando di risolvere è un principio di progettazione. Sto cercando di impostare un principio di progettazione o una serie di regole che indicano quando si dovrebbe rinunciare a una situazione eccezionale, anche se viene rilevata in tempo. L'obiettivo è cercare di non bloccare l'applicazione il più possibile.
Qualcuno ha già fatto brainstorming e comunicato a riguardo? Sto cercando casi generici specifici e possibili soluzioni, o regole del pollice.
UPDATE
suggerimenti finora:
- smettere di correre se la coerenza dei dati può essere compromessa
- smettere di correre se i dati possono essere cancellati
- smettere di funzionare se non si può fare nulla (Memoria insufficiente ...)
Interrompere l'esecuzione se il servizio chiave non è disponibile o perché mes disponibile e non può essere riavviato
Procedimento/servizio dovrebbe controllare se può eseguire il suo compito da uno stato stabile, se non si deve informare l'utente (log) e fare nulla
- Se applicazione deve essere fermato , degradare la grazia di possibili
- Utilizzare rollback nelle transazioni db
- eccezioni personalizzati possono essere utilizzati per dare consigli su come risolvere la situazione dal gestore
- registrare le informazioni quanto più rilevanti possibile
- Comunicami gli sviluppatori
Preserve State e la coerenza dei dati quanto più è possibile
correzioni rapido può essere dannoso, quando il debug, meglio lasciare che il crash dell'applicazione e analizzare in dettaglio cosa è causato
Se l'applicazione è importante (ad esempio il server che pilota un impianto) l'applicazione deve 1) telefonare al ragazzo che dovrà risolverlo 2) eseguire finché è sicuro di non eliminare tutto (la coerenza dei dati non può quasi mai essere compromessa). –
Idealmente, l'applicazione non dovrebbe mai bloccarsi. Tuttavia, l'applicazione dovrebbe fallire con garbo quando un componente come un database o una videocamera è mancante o irraggiungibile. –
Avrei pensato che per molte RuntimeException serie non avresti alcuna scelta se lasciarlo andare in crash, a meno che non si avvolga il bit di apertura del codice in un try ... catch block. –