Excepciones en JAVA
Excepciones en JAVA
En Java los errores son conocidos como excepciones. Cuando se produce una excepción, se crea un objeto del mismo tipo de la excepción. En lenguaje Java las excepciones pueden manejarse con las clases que extienden el paquete Throwable de manera directa o indirecta, pero existen diversos tipos de excepciones y formas para manejarlas. La clase Throwable, es la superclase de todas las clases de manejo de errores.
Cuando se genera una excepción, el programa Java busca un manejador para el error (handler). El handler es una porción del código que indica el tipo de objeto correspondiente al error que se van a ejecutar luego de que ocurrió el error.
Se pueden dar varios tipos de errores:
- Al tratar de acceder a elementos de arreglos con un índice mayor al del último elemento del arreglo.
- Divisiones para cero.
- Manejo de archivos. No existe, no se tiene suficientes permisos, etc.
- Errores accediendo a bases de datos.
- Errores definidos por el usuario. Tarjeta incorrecta, excede cupo de transferencia, etc.
TIPOS DE EXCEPCIONES
- Checked: son las excepciones que revisan el compilador.
- Unchecked: son las excepciones que no revisa el compilador y se dan en tiempo de ejecución. Ejemplo: RuntimeException.
MANEJO DE EXCEPCIONES
Cuando un programa Java viola las restricciones semánticas del lenguaje (se produce un error), la máquina virtual Java comunica este hecho al programa mediante una excepción. La aplicación Java no debe morir y generar un Core (o un crash en caso del DOS), al contrario, se lanza (throw) una excepción y se captura (catch) para resolver esa situación de error.
Muchas clases de errores pueden provocar una excepción, desde un desbordamiento de memoria o un disco duro estropeado, hasta un disquete protegido contra escritura, un intento de dividir por cero o intentar acceder a un vector fuera de sus límites. Cuando esto ocurre, la máquina virtual Java crea un objeto de la clase exception o error y se notifica el hecho al sistema de ejecución.
Se dice que se ha lanzado una excepción (“Throwing Exception”).
Un método se dice que es capaz de tratar una excepción (“Catch Exception”) si ha previsto el error que se ha producido y prevé también las operaciones a realizar para “recuperar” el programa de ese estado de error. En el momento en que es lanzada una excepción, la máquina virtual Java recorre la pila de llamadas de métodos en busca de alguno que sea capaz de tratar la clase de excepción lanzada.
Para ello, comienza examinando el método donde ese ha producido la excepción; si este método no es capaz de tratarla, examina el método desde el que se realizó la llamada al método donde se produjo la excepción y así sucesivamente hasta llegar al último de ellos. En caso de que ninguno de los métodos de la pila sea capaz de tratar la excepción, la máquina virtual Java muestra un mensaje de error y el programa termina.
Los programas escritos en Java también pueden lanzar excepciones explícitamente mediante la instrucción throw, lo que facilita la devolución de un “código de error” al método que invocó el método que causó el error.
Ejemplo:
public class Excepciones1 {
public static void main(String[] arg) {
metodo();
}
static void metodo() {
int divisor = 0;
int resultado = 100/divisor; System.out.println(“Resultado: ” + resultado); System.out.println(“Una Suma:” + (3+4));
}
}
Si intentamos ejecutar este programa obtendremos el siguiente resultado:
Exception in thread ‘’main’’ java.lang.ArithmeticException: / by zero ……
Lo que ha ocurrido es que la máquina virtual Java ha detectado una condición de error y ha creado un objeto de la clase java.lang.ArithmeticException. Como el método donde se ha producido la excepción no es capaz de tratarla, se trata por la máquina virtual Java, que muestra el mensaje de error anterior y finaliza la ejecución del programa.
Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros