2. Excepciones
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.
La clase Throwable, es la superclase de todas las clases de manejo
de errores.
3. Excepciones
Cuando se genera una excepción, el programa en java
busca un manejador para el error (handler).
El handler es una porción de código que identifica el tipo
de objeto correspondiente al error que se ha producido,
y contiene sentencias que se van a ejecutar luego de que
ocurrió el error.
4. Excepciones
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.
Errores accediendo a bases de datos.
Errores definidos por el usuario
5. Tipos de Excepciones
Checked: Son las excepciones que revisa el
compilador.
Unchecked: Son las excepciones que no revisa el
compilador y se dan en tiempo de ejecución. Ejemplo:
RuntimeException
Clase Error, Clase
maneja Exception,
Errores de la maneja
JVM errores del
programa
7. Excepciones más frecuentes
ArithmeticException
int i=12/0
NullPointerException
Date d=null;
System.out.println (d.toString());
NegativeArraySizeException
Intento de creación de un vector con un número negativo de elementos
ArrayIndexOutOfSizeException
Intento de acceso a un elemento de un vector fuera de rango
SecurityException
Error de seguridad en los navegadores
8. Declarando Excepciones
La sentencia throw (lanzar) se usa en los métodos para lanzar una excepción que será
revisada por el compilador (checked exception):
throw new NombreClasedeExcepcion();
Un método que llama a otro que lanza una excepción, se debe declarar de la siguiente
forma:
modificador tipodatoretorno nombremetodo(.., ...) throws NombreClasedeExcepcion
Ejemplo:
public static String getInput(String prompt) throws IOException {
/* código */
}
Múltiples excepciones pueden ser separadas por comas.
Ejemplo:
public void read(BufferedReader in ) throws
IOException, ClassNotFoundException{
/* código */
}
9. Manejando Excepciones
Para manejar las excepciones y evitar que un programa termine
por algún error se usa el bloque: try-catch.
Las sentencias del bloque try, que se encuentran después de la
sentencia que causó la excepción no se ejecutarán.
10. Bloque try-catch
El bloque try, encierra la porción de código donde se
pueden producir excepciones. (try en español es intentar).
El bloque catch contiene el código que se va a ejecutar una
vez que se produce un error (catch en español es atrapar).
El bloque catch, tiene un argumento, que representa al tipo
de excepción que el manejador (handler) puede procesar.
Por cada bloque try, hay por lo menos un bloque catch, de
tal forma que se pueden capturar varios tipos de
excepciones.
11. Bloque try-catch
La clásula catch que recibe como argumento un objeto
de tipo Exception, maneja todos los errores del
programa, que no pueden ser atrapados por los otros
demás bloques catch y debe ser puesto como último
bloque catch.
Recordar que Exception es la superclase de todas las
excepciones que produce mi programa y puede
manejar las excepciones producidas por sus subclases.
12. Proceso de Manejo de Excepciones usando
el bloque try-catch
Cuando ocurre una excepción en una parte del programa que está siendo
manejada por un bloque try-catch, se deja de ejecutar el resto de
instrucciones del bloque try y se pasa el control del programa al primer
bloque catch.
El programa busca el bloque catch que pueda procesar el tipo de excepción
que se ha dado.
Se compara el objeto que se creo cuando se produjo el error, con el tipo de
excepción que recibe como parámetro el catch, y entra al catch cuyo argumento
sea del mismo tipo o una superclase de la excepción que se produjo.
Cuando se termina de ejecutar el bloque catch, los demás bloques catch son
ignorados y la ejecución del programa continúa en la primera línea después
del bloque try-catch.
13. Bloque finally
El bloque finally siempre se ejecuta independientemente de si se
da o no una excepción. Es opcional y se lo usa generalmente para
liberar recusos.
try {
Sentencias;
}
catch (UnTipodeException ex1) {
sentencias de manejo de error;
}
catch (OtroTipodeException ex2) {
sentencias de manejo de error;
}
finally {
//es opcional y contiene sentencias de liberación de recursos.
}
14. Métodos de la clase Throwable
String getMessage()
Retorna un mensaje grabado en el objeto de excepción.
void printStackTrace()
Muestra el contenido de la call stack. Es útil para determinar
en qué método ocurrió la excepción, y que otros métodos
llamaron a este.
Ver Excepciones.java