Excepciones en Java Tipos (heredan de Throwable): IOExcepcion //excepciones relacionadas con la entrada/salida de datos NullPointerException //recibir una referencia null como argumentos de un método ArrayIndexOutOfBoundException // sobrepasar tamaño de un array ArithmeticException //operaciones aritméticas no validas (dividir por cero) Métodos heredados de Throwable: String getMessage() //extrae el mensaje asociado a la excepción String toString () //devuelve un String que describe la excepción PrintStackTrace() //indica el método donde se lanzo la excepción Estructura de las excepciones: 1º-Clase Excepción public class NombreExcepcion extends Exception{ //Constructores public NombreExcepcion(){ //constructor por defecto super(); } public NombreExcepcion (String s){ //constructor con mensaje super(s); // *si no añadimos mensaje en throw lo metemos aquí (3º apar.) } } 2º-Interfaces con métodos que pueden lanzar excepciones: public interface NombreInterface { ... public [tipo] MetodoLanzaExcepcion [tipo] throws NombreExcepcion; ... } 3º-Métodos que capturan las excepciones: // dentro de su respectiva clase (implements) public [tipo] MetodoLanzaExcepcion [tipo] throws NombreExcepcion{ ... if (caso para el que se lanzara la excepción){ throw new NombreExcepcion(); //*podemos añadir un mensaje } else{ ... //tratamiento si todo ocurre correctamente ... } } 4º-Método main public class NombreClasePrincipal { public static void main (String[] args) { ... try{ ... //sentencias que pueden dar excepciones }catch(NombreExcepcion error){ //Mensajes a mostrar si lanza la excepción }finally{ //se ejecutara siempre } } 5º- Métodos que propagan las excepciones: Buscamos en el código de nuestro programa aquellos métodos que utilicen métodos o creen objetos que pueden dar lugar a excepciones. public [tipo] PropagoExcepcion [tipo] throws NombreExcepcion { ... //En este caso no introducimos ningún tipo de tratamiento sino que hacemos que //los métodos a los que propagamos la excepción se encarguen de tratarla ... }