Está en la página 1de 3

Programacin Orientada a Objetos.

Excepciones Introduccin
Definicin. Una excepcin es un objeto que se genera automticamente cuando se produce un acontecimiento circunstancial que impide el normal funcionamiento del programa: y Dividir por cero y No encontrar un determinado fichero y Utilizar un puntero nulo en lugar de una referencia a un objet o

El objeto generado excepcin contiene informacin sobre el acontecimiento ocurrido y transmite esta informacin al mtodo desde el que se ha generado la excepcin. La ocurrencia de estas situaciones excepcionales provocar la terminacin no controlada del programa o aplicacin.
Las excepciones estndar En Java las situaciones que pueden provocar un fallo en el programa se denominan excepciones. Las excepciones pueden originarse de dos mod os: El programa hace algo ilegal (caso normal)

El siguiente cdigo de ejemplo origina una excepcin de divisin por cero: public class PruebaExcepcion { public static void main( String[] a ) { int i=0, j=0, k; k = i/j; // Origina un error de division-by-zero } } Si compilamos y ejecutamos esta aplicacin Java, obtendremos la siguiente salida por pantalla: > javac PruebaExcepcion.java > java PruebaExcepcion java.lang.ArithmeticException: / by zero at PruebaExcepcion.main(melon.java:5)
Solucin tradicional La solucin tradicional consista en que los mtodos devolvieran un valor en el que indicaran si en su ejecucin se haba producido alguna incidencia que pudiera dar lugar a un error en el futuro. Por ejemplo la funcin fopen del C se utiliza para abrir un fichero en el disco. Si este fichero no puede ser abierto la funcin devuelve el valor null.

Unidad 5

Pgina 1

Programacin Orientada a Objetos.


Desventajas de la solucin tradicional El encargado de llamar a la funcin debe ac ordarse de recoger el valor de retorno. El cdigo puede convertirse en una sucesin de comprobaciones de situaciones errneas. El encargado de llamar a la funcin puede no saber tratar el error y necesite pasrselo a mtodos de niveles superiores. Ventajas de las excepciones Si no se quiere las excepciones no pueden ser obviadas El lenguaje provee de construcciones del tipo try - catch - finally que facilitan la escritura del cdigo en presencia de excepciones y evita tener que incluir sentencias condicionales cada vez que se llama a un mtodo que puede generar una excepcin. Los mtodos que no sepan cmo tratar una excepcin pueden pasarla a niveles superiores a travs de la clusula throws

Ejemplo sin excepcin class Piscina { private int nivel; public final int MAX_NIVEL; public Piscina( int max) { if (max<0) max=0; MAX_NIVEL=max; } public int getNivel() { return nivel; } public void vaciar(int cantidad) { nivel=nivel-cantidad; } public void llenar(int cantidad) { nivel=nivel+cantidad; }

}
Ejemplo con excepcin class Piscina { private int nivel; public final int MAX_NIVEL; public Piscina( int max) { if (max<0) max=0;
Unidad 5 Pgina 2

Programacin Orientada a Objetos.


MAX_NIVEL=max; } public int getNivel() { return nivel; } public void vaciar(int cantidad) throws Exception { if (nivel-cantidad < 0) throw new Exception(); else nivel=nivel-cantidad; } public void llenar(int cantidad) throws Exception { if (nivel+cantidad > MAX_NIVEL) throw new Exception(); else nivel=nivel+cantidad; } }
Algunas clases de Excepciones Exception Es la clase base de aquellas excepciones que puede lanzar un programa, por lo que es la clase que ms interesa al programador. Tanto Exception como sus subclases (sin incluir RuntimeException) son excepciones comprobadas, en el sentido de que el compilador comprueba que si se lanza una excepcin en un mtodo esta debe ser capturada por el propio mtodo o incluida en su clusula throws.

RuntimeException Junto con sus subclases representan excepciones en tiempo de ejecucin que no necesitan ser capturadas obligatoriamente, por lo tanto se trata de excepciones no comprobadas. Las RuntimeException pueden ocurrir en cualquier parte de un programa y, normalmente, de forma muy numerosa. Por ese motivo el coste de comprobar obligatoriamente si ha ocurrido una RuntimeException es mayor que el beneficio que se produce por dicha captura obligatoria. De esta forma Java permite que la captura de estas excepciones sea algo opcional.

Unidad 5

Pgina 3