2012-02-21 9 views
17

¿Es posible crear mi propia excepción no verificada en Java?¿Es posible crear mi propia excepción no revisada en Java?

Básicamente, me gustaría

  • tener mi propia clase de excepción, MyUncheckedException
  • eso no hace a actualizar todos los métodos que llaman al método que lanza esta excepción con una inundación de la propia throws
+0

Solo tenga en cuenta que agregar nuevas excepciones al código existente básicamente rompe la compatibilidad con las versiones anteriores de su API. Claro, si solo agregas RuntimeExceptions, sigue siendo compatible con binarios, pero personalmente considero que es aún peor: las personas que no sepan ahora se vincularán a la nueva versión y de repente obtendrán errores extraños. Ugh. – Voo

Respuesta

29

Sí. Extienda MyUncheckedException de RuntimeException. Sin embargo, a continuación es la directriz de documentation

En términos generales, no tirar un RuntimeException o crear una subclase de RuntimeException simplemente porque no desea ser molestado con especificando las excepciones sus métodos pueden arrojar .

Aquí está la pauta de la línea inferior: Si un cliente puede razonablemente ser espera recuperarse de una excepción, haga una excepción marcada. Si un cliente no puede hacer nada para recuperarse de la excepción, realice una excepción sin marcar .

2

Creo que solo quieres subclase RuntimeException?

4

Sí - derivarla de RuntimeException

Asegúrese de que usted lo hace por la razón correcta: por regla general, las excepciones de tiempo de ejecución indican errores de programación, en lugar de los errores que un programa potencialmente podría reaccionar a de alguna significativa camino.

0

SÍ. De acuerdo con Effective Java -

Mientras que la especificación del lenguaje Java no lo requiere, hay una fuerte convención de que los errores están reservados para su uso por la JVM para indicar las deficiencias de recursos, fallas invariantes, u otras condiciones que hacen imposible continuar la ejecución. Dada la aceptación casi universal de esta convención, es mejor no implementar ninguna subclase de error nueva. Por lo tanto, todos los throwables no revisados ​​que implemente deben subclasificar RuntimeException (directa o indirectamente).

A continuación el uso de excepción no comprobada se recomienda: -

  1. Utilice excepciones de tiempo de ejecución para indicar los errores de programación.
  2. Si cree que una condición puede permitir la recuperación, use una excepción marcada; si no, use una excepción de tiempo de ejecución. Si no está claro si la recuperación es posible, probablemente sea mejor que utilice una excepción sin marcar.

Acerca de la documentación sin control excepción -

utilice la etiqueta el Javadoc @throws para documentar cada una excepción no comprobada de que un método puede lanzar, pero no utilice los tiros de palabras clave para incluir sin marcar excepciones en el método declaración.

Cuestiones relacionadas