Pregunta

A veces veo

try {

} catch(Throwable e) {

}

Y a veces

try {

} catch(Exception e) {

}

¿Cuál es la diferencia

¿Fue útil?

Solución

Al detectar Throwable que incluye cosas que Error subclase. En general, usted no debe hacer que, excepto tal vez en la más alta "catch-all" nivel de un hilo en el que desea iniciar sesión o manejar absolutamente todo lo que puede ir mal. Sería más típica en una aplicación de tipo marco (por ejemplo, un servidor de aplicaciones o un marco de pruebas) en el que se puede ejecutar código desconocido y no debe ser afectada por lo que va mal con ese código, como se tanto como sea posible.

Otros consejos

La primera captura todas las subclases de Throwable (esto incluye Exception y Error ), el segundo uno atrapa todas las subclases de < a href = "http://java.sun.com/javase/6/docs/api/java/lang/Exception.html" rel = "noreferrer"> Exception .

Error es mediante programación irrecuperable de ninguna manera y es por lo general no ser atrapado, excepto para propósitos de registro (que pasa a través de nuevo). Exception es recuperable mediante programación. Su RuntimeException subclase indica un error de programación y suele no ser capturado también.

Throwable es super clase de Exception, así como Error. En casos normales siempre debemos coger subclases de Exception, por lo que la causa no se pierda.

Sólo en casos especiales donde se ve posibilidad de las cosas van mal, que no está en control de su código Java, se deben coger Error o Throwable.

  

Me acuerdo de la captura de Throwable a bandera que una biblioteca nativa no está cargado.

Thowable atrapa realmente todo, incluso ThreadDeath la que se tira por defecto para detener un hilo a partir del método Thread.stop() ahora en desuso. Así que por la captura de Throwable puede estar seguro de que nunca a dejar el bloque try sin al menos de pasar por su bloque catch, pero usted debe estar preparado para manejar también OutOfMemoryError y InternalError o StackOverflowError.

La captura de Throwable es más útil para servidores externo bucles que el delegado todo tipo de peticiones al código fuera, pero puede en sí mismo nunca terminar para mantener el servicio con vida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top