Cuando programamos tratamos de recoger a través de las sentencias de decisión - if-else y switch-case - los distintos caminos que puede seguir el flujo de control del programa, para evitar inconsistencias y resultados inesperados.
A la hora de ejecutar un programa, este depende de las entradas que reciba en cada momento, dichas entradas nos llevan a una gran casuística y a eventos que de no ser gestionados derivarán en un error.
Por ejemplo, en la lectura de un número que se espera que sea un entero, el método nextInt de la clase Scanner va a reportar una excepción si se encuentra que el valor introducido es un dato de un tipo distinto a int. Dicha excepción, si no ha sido gestionada, provocará la terminación anormal del programa.
Podemos decir que:
Una excepción es un evento que sucede durante la ejecución de un programa que interrumpe el funcionamiento normal del mismo.
Algunos ejemplos de errores comunes generados por una mala gestión de las excepciones son:
- Accesos ilegales en arrays
- Accesos ilegales en Strings
- Operaciones de división por 0
- Accesos inválidos a archivos
- Fallos en la conexión a bases de datos
Java proporciona un amplio conjunto de clases que nos va a permitir capturar y tratar las posibles excepciones que pueda generar un código.
¿Qué ocurre cuando se produce una excepción?
Ante una excepción, Java crea un objeto que contiene la información asociada a ella. Si hemos implementado un código específico para tratarla; la excepción es manejada y en otro caso el programa terminará.
Excepción NO tratada
- Se muestra la descripción de la excepción.
- Se muestra la traza de la pila de llamadas.
- El programa finaliza.
* nextInt() espera recibir un número entero, al introducir un número en coma flotante el método lanza la excepción de tipo InputMismatchException, que ocurre cuando la entrada no coincide con el tipo de dato esperado.
Describiendo el proceso un poco más en detalle podemos decir que:
- La JVM (Java Virtual Machine) crea un objeto excepción y lo lanza, en ese momento la ejecución normal del programa se detiene.
- El sistema intenta localizar en el método en el que se ha producido la excepción un código que capture ese objeto y trate la excepción.
- Si el método no contiene el código específico (también conocido como manejador de excepciones), se busca en el método que llamó a este y así sucesivamente en toda la pila de llamadas.
- Cuando se encuentra el manejador correspondiente se le pasa la excepción. Si este no se encuentra, se mostrará el error correspondiente y el programa finaliza.
No hay comentarios :
Publicar un comentario