¿Por qué algunas excepciones en Java no son detectadas por catch (Exception ex)
? Este es un código que falla completamente con una excepción no controlada. (Java Versión 1.4).Excepción de Java no detectada
public static void main(String[] args) {
try {
//Code ...
} catch (Exception ex) {
System.err.println("Caught Exception");
ex.printStackTrace();
exitCode = app.FAILURE_EXIT_CODE;
}
finally {
app.shutdown();
}
System.exit(exitCode);
}
me siento un Exception in thread "main" java.lang.NoSuchMethodError
Pero esto funciona
public static void main(String[] args) {
int exitCode = app.SUCCESS_EXIT_CODE;
try {
//Code ...
} catch (java.lang.NoSuchMethodError mex){
System.err.println("Caught NoSuchMethodError");
mex.printStackTrace();
exitCode = app.FAILURE_EXIT_CODE;
} catch (Exception ex) {
System.err.println("Caught Exception");
ex.printStackTrace();
exitCode = app.FAILURE_EXIT_CODE;
}
finally {
app.shutdown();
}
System.exit(exitCode);
}
consigo Caught NoSuchMethodError java.lang.NoSuchMethodError:
pensé que la captura de excepciones capturar todas las excepciones? ¿Cómo puedo capturar todas las excepciones en Java?
+1: buen diagrama! – akf
Los errores no son realmente excepciones, por lo que no se derivan de Excepción. – Powerlord
@R. Bemrose: están de acuerdo con la Especificación del lenguaje Java: "Todas las excepciones están representadas por una instancia de la clase Throwable o una de sus subclases" y "Las clases de excepciones sin verificar son la clase RuntimeException y sus subclases, y la clase Error y sus subclases " –