Почему некоторые исключения из Java не пойманы catch (Exception ex)
? Это код полностью не работает с необработанным исключением. (Java Version 1.4).Исключение Java исключено
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);
}
Я получаю Exception in thread "main" java.lang.NoSuchMethodError
Но это работает
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);
}
Я получаю Caught NoSuchMethodError java.lang.NoSuchMethodError:
Я думал, что перехват исключений будет перехватывать все исключения? Как я могу уловить все исключения в java?
+1: хорошая диаграмма! – akf
Ошибки на самом деле не являются исключениями, поэтому почему они не происходят из Исключения. – Powerlord
@R. Bemrose - они соответствуют спецификации языка Java: «Каждое исключение представлено экземпляром класса Throwable или одним из его подклассов», а «Непроверенными классами исключений являются класс RuntimeException и его подклассы, а класс Error и его подклассы «. –