tipos - propagacion de excepciones en java
Excepciones no verificadas en Java: ¿Heredar de Error o RuntimeException? (4)
Creo que los JavaDocs lo dicen todo:
Un
Error
es una subclase deThrowable
* que indica problemas graves que una aplicación razonable * no debe intentar detectar. La mayoría de esos errores son condiciones anormales. * El errorThreadDeath
, aunque es una condición "normal", * también es una subclase deError
porque la mayoría de las aplicaciones * no deberían intentar atraparlo.
Estas son cosas como stackoverflow, sin memoria ... desea extender RuntimeException.
Me gustaría manejar los errores con excepciones (sin marcar). Llamé que para cada tipo de excepción debería crear una subclase de Error o RuntimeException. ¿Cual es la diferencia?
RuntimeException es un tipo especial de Exception, excepciones que el compilador no detectará. El error es algo que se produce cuando hay algún problema grave del sistema. No hay una relación estrecha entre Error y RuntimeException. Los tuyos parecen más cercanos a RuntimeException.
Errors
deben identificar problemas irrecuperables en el programa (por ejemplo, falta de memoria). Exceptions
deberían identificar problemas recuperables por programación que son causados por condiciones inesperadas fuera del control del código (p. Ej. Base de datos inactiva). RuntimeExceptions
debería identificar problemas recuperables por programación que son causados por fallas en el flujo de código (léase: fallas del desarrollador tales como puntero nulo, argumento ilegal, etc.).
En tu caso, quieres heredar de RuntimeException
.
Siempre use RuntimeException: prácticamente nunca he visto un caso de error.
Sin embargo, he escuchado lo mismo acerca de crear tu propia excepción y realmente no lo entiendo. A menudo es útil, pero utilizo InvalidArgumentException TODO EL TIEMPO.