Según 11.1.1. los tipos de excepciones
Una excepción está representado por una instancia de la clase Throwable (una subclase directa de Object) o una de sus subclases.
Throwable y todas sus subclases son, colectivamente, las clases de excepción.
Tenga en cuenta que una subclase de Throwable no debe ser genérica (§8.1.2).
Las clases Excepción y Error son subclases directas de Throwable.
La excepción es la superclase de todas las excepciones de las que los programas normales pueden desear recuperarse.
El error es la superclase de todas las excepciones de las que normalmente no se espera que se recuperen los programas normales.
El error y todas sus subclases son, colectivamente, las clases de error.
La clase Error es una subclase de Throwable, distinta de Exception en la jerarquía de clases, para permitir que los programas utilicen la expresión idiomática "} catch (Exception e) {" (§11.2.3) para captar todas las excepciones de las cuales la recuperación puede ser posible sin detectar errores de los cuales normalmente no es posible la recuperación.
La clase RuntimeException es una subclase directa de Excepción. RuntimeException es la superclase de todas las excepciones que pueden lanzarse por muchas razones durante la evaluación de la expresión, pero de las cuales aún es posible la recuperación.
RuntimeException y todas sus subclases son, colectivamente, las clases de excepción en tiempo de ejecución.
Las clases de excepción sin marcar son las clases de excepción en tiempo de ejecución y las clases de error.
Las clases de excepción comprobadas son todas clases de excepciones distintas de las clases de excepción sin marcar. Es decir, las clases de excepciones comprobadas son todas las subclases de Throwable distintas de RuntimeException y sus subclases y Error y sus subclases.
¿por qué no podemos verificar las excepciones de tiempo de ejecución? como sabemos que podría haber una NullPointerException, entonces deberíamos verificarlo. ¿alguna idea? – UnKnown
@UnKnown: No, no quieres que todos los métodos que escribas tengan que atrapar o declarar NullPointerException ... Eso sería horrible. –
¿Qué significa conceptualmente que no hay diferencia entre las excepciones marcadas y las no verificadas? solo la implementación hace la diferencia? – UnKnown