Excepciones de java - KarenEsteban/Lenguajes-KarenEsteban GitHub Wiki
En Java los errores en tiempo de ejecución (cuando se esta ejecutando el programa) se denominan excepciones, y esto ocurre cuando se produce un error en alguna de las instrucciones de nuestro programa, como por ejemplo cuando se hace una división entre cero, cuando un objeto es 'null' y no puede serlo, cuando no se abre correctamente un fichero, etc. Cuando se produce una excepción se muestra en la pantalla un mensaje de error y finaliza la ejecución del programa.
En Java (al igual que en otros lenguajes de programación), existen mucho tipos de excepciones. Ejemplos de situaciones que provocan una excepción:
- No hay memoria disponible para asignar
- Acceso a un elemento de un array fuera de rango
- Leer por teclado un dato de un tipo distinto al esperado
- Error al abrir un fichero
- División por cero
- Problemas de Hardware
Si la excepción no se trata, el manejador de excepciones realiza lo siguiente:
- Muestra la descripción de la excepción.
- Muestra la traza de la pila de llamadas.
- Provoca el final del programa.
JERARQUÍA DE EXCEPCIONES
Todas las excepciones lanzadas automáticamente en un programa Java son objetos de la clase Throwable o de alguna de sus clases derivadas.
La clase Throwable deriva directamente de Object y tiene dos clases derivadas directas: Error y Exception.
Bloque try: En el bloque try se encuentran las instrucciones que pueden lanzar una excepción. Solamente se pueden capturar las excepciones lanzadas dentro de un bloque try. Una excepción se puede lanzar de forma automática o mediante la palabra reservada throw. Cuando se lanza la excepción se transfiere la ejecución del programa desde el punto donde se lanza la excepción a otro punto donde se captura la excepción.
Bloque catch: Es el bloque de código donde se captura la excepción. El bloque catch es el manejador o handler de la excepción. Aquí se decide qué hacer con la excepción capturada. Puede haber varios bloques catch relacionados con un bloque try. Una vez finalizado un bloque catch la ejecución no vuelve al punto donde se lanzó la excepción. La ejecución continúa por la primera instrucción a continuación de los bloques catch.
Bloque finally: Es opcional. Debe aparecer a continuación de los bloques catch. También puede aparecer a continuación de un bloque try si no hay bloques catch. La ejecución de sus instrucciones queda garantizada independientemente de que el bloque try acabe o no su ejecución incluso en estos casos: Aunque el bloque try tenga una sentencia return, continue o break, se ejecutará el bloque finally Cuando se haya lanzado una excepción que ha sido capturada por un bloque catch. El finally se ejecuta después del catch correspondiente. Si se ha lanzado una excepción que no ha sido capturada, se ejecuta el finally antes de acabar el programa. Un bloque finally se usa para dejar un estado consistente después de ejecutar el bloque try. Un ejemplo de uso de bloques finally puede ser cuando estamos tratando con ficheros y se produce una excepción. Podemos escribir un bloque finally para cerrar el fichero. Este bloque se ejecutará siempre y se liberarán los recursos ocupados por el fichero.