2012-02-21 15 views
17

È possibile creare la mia eccezione non controllata in Java?È possibile creare la mia Eccezione non controllata in Java?

In sostanza, mi piacerebbe

  • avere la mia classe di eccezione, MyUncheckedException
  • Questo non mi fa aggiornare tutti i metodi che chiamano il metodo che genera questa eccezione con un diluvio di propria throws
+0

State attenti che l'aggiunta di nuove eccezioni al codice esistente rompe sostanzialmente la compatibilità con le versioni precedenti del vostro API. Certo, se aggiungi solo RuntimeExceptions è ancora compatibile con i binari, ma personalmente lo considero ancora peggio: le persone non consapevoli ora si collegheranno alla nuova versione e improvvisamente avranno degli strani errori ... ugh. – Voo

risposta

29

Sì. Estendi MyUncheckedException da RuntimeException. Tuttavia, al di sotto è la linea guida da documentation

In generale, non gettare una RuntimeException o creare un sottoclasse di RuntimeException, semplicemente perché non si vuole essere disturbati con specificando le eccezioni vostri metodi possono buttare .

Ecco la linea guida linea di fondo: se un client può ragionevolmente essere previsto per recuperare da un'eccezione, ne fanno un eccezione controllata. Se un client non può eseguire alcuna operazione di ripristino dall'eccezione, trasformarlo in un'eccezione non controllata .

2

Penso che vogliate sottoclasse RuntimeException?

4

Sì - derivano da RuntimeException

Assicurarsi che lo fate per il giusto motivo: di regola, eccezioni di runtime indicano errori di programmazione, piuttosto che gli errori che un programma potrebbe potenzialmente reagire in un certo senso modo.

0

SI. Secondo Effective Java -

Mentre il linguaggio Java Specification non lo richiede, v'è una forte convenzione che gli errori sono riservati per l'uso da parte JVM per indicare carenze di risorse, fallimenti invarianti, o altre condizioni che lo rendono impossibile continuare l'esecuzione. Data l'accettazione quasi universale di questa convenzione, è meglio non implementare nuove sottoclassi di Errore. Pertanto, tutti i materiali pubblicitari non controllati implementati devono eseguire la sottoclasse di RuntimeException (direttamente o indirettamente).

Di seguito l'utilizzo d'eccezione incontrollato si raccomanda: -

  1. eccezioni Usa di runtime per indicare gli errori di programmazione.
  2. Se si ritiene che una condizione possa consentire il recupero, utilizzare un'eccezione controllata; in caso contrario, utilizzare un'eccezione di runtime. Se non è chiaro se è possibile il recupero, probabilmente stai meglio usando un'eccezione non controllata.

A proposito di documentare incontrollato eccezione -

Utilizzare tag Javadoc @throws di documentare ciascuna eccezione incontrollato che un metodo può lanciare, ma non utilizzare la parola chiave tiri per includere incontrollati eccezioni nel metodo dichiarazione.

Problemi correlati