Wyjątek Java nie został złapany

Dlaczego niektóre wyjątki w Javie nie są wychwytywane przezcatch (Exception ex)? Jest to kod całkowicie zawodzący z nieobsługiwanym wyjątkiem. (Java wersja 1.4).

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);
}

dostałemException in thread "main" java.lang.NoSuchMethodError

Ale to działa

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);
}

dostajęCaught NoSuchMethodError java.lang.NoSuchMethodError:

Myślałem, że łapanie wyjątków złapie wszystkie wyjątki? Jak mogę złapać wszystkie wyjątki w java?

questionAnswers(7)

yourAnswerToTheQuestion