Excepción de Java no capturada

¿Por qué algunas excepciones en Java no son detectadas porcatch (Exception ex)? Este es el código que falla completamente con una excepción no controlada. (Java versión 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);
}

Yo tengo unException 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);
}

yo obtengoCaught NoSuchMethodError java.lang.NoSuchMethodError:

Pensé que atrapar excepciones atraparía todas las excepciones? ¿Cómo puedo atrapar todas las excepciones en java?

Respuestas a la pregunta(7)

Su respuesta a la pregunta