Una excepción puede ocurrir por dos razones:
- Porque se produzca un error en tiempo de ejecución en la máquina virtual de Java: en tal caso, se crea una instancia de un objeto excepción (cualquier objeto que descienda de la clase java.lang.Throwable). A estas excepciones se les denomina excepciones no verificadas.
- Porque un método genere explícitamente un objeto que descienda de la clase Throwable (generable): los objetos generables se generan mediante la palabra clave throw. Las excepciones generadas de esta forma se denominan excepciones verificadas.
- Excepciones no verificadas-->se generan por errores en tiempo de ejecución. Son no verificadas ya que el compilador no es capaz de determinar si el código gestiona la excepción debido a que un error en tiempo de ejecución puede ocurrir en cualquier parte de un programa y por multitud de razones.Las clases de excepción que descienden de las clases RuntimeException y Error son excepciones no verificadas.
- Excepciones verificadas -->Las excepciones son verificadas por dos razones:
- El compilador comprueba durante la compilación que el método incluye código para generar una excepción de tipo generable (las excepciones no verificadas no necesitan que las declaremos).
- El compilador obliga a que el código que llame a uno de estos métodos incluya la llamada en una instrucción try-catch y que proporcione un bloque catch para capturar la excepción.