varios try solo sentencia number letras con clase catch capturar java exception exception-handling throwable

solo - try catch y throws java



Diferencia entre usar Throwable y Exception en un try catch (4)

Al capturar Throwable incluye cosas que subclase Error . Por lo general, no debe hacer eso, excepto tal vez en el nivel más alto de "captura todo" de un hilo en el que desea iniciar sesión o manejar de otra manera absolutamente todo lo que pueda salir mal. Sería más típico en una aplicación de tipo marco (por ejemplo, un servidor de aplicaciones o un marco de prueba) donde puede ejecutar código desconocido y no debería verse afectado por nada que vaya mal con ese código, tanto como sea posible.

A veces veo

try { } catch(Throwable e) { }

Y aveces

try { } catch(Exception e) { }

Cuál es la diferencia


La primera captura todas las subclases de Throwable (esto incluye Exception y Error ), la segunda captura todas las subclases de Exception .

Error es programable de cualquier manera y por lo general no se puede detectar, excepto para fines de registro (que lo pasa de nuevo). Exception es recuperable programáticamente. Su subclase RuntimeException indica un error de programación y, por lo general, tampoco debe detectarse.


Thowable captura realmente todo, incluso ThreadDeath, que se lanza de forma predeterminada para detener un hilo del método Thread.stop() ahora en desuso. Por lo tanto, al capturar Throwable puede estar seguro de que nunca abandonará el bloque try sin pasar al menos por su bloque catch, pero debe estar preparado para manejar también OutOfMemoryError y InternalError o Error .

Catching Throwable es más útil para los bucles de servidores externos que delegan todo tipo de solicitudes a código externo, pero que nunca pueden terminar para mantener el servicio activo.


Throwable es una súper clase de Exception y Error . En casos normales, siempre deberíamos capturar subclases de Exception , para que la causa raíz no se pierda.

Solo los casos especiales en los que ve la posibilidad de que las cosas salgan mal y no controle su código Java, debe detectar Error o Throwable .

Recuerdo haber capturado Throwable para marcar que una biblioteca nativa no está cargada.