Está en la página 1de 3

Excepcin

Una excepcin es una condicin anormal que se produce en una


sentencia de cdigo a tiempo de ejecucin. En otras palabras, una excepcin
es un error en tiempo de ejecucin. Una excepcin Java es un objeto que
describe una condicin excepcional (esto es, error) que ha ocurrido a un
segmento de cdigo. Cuando surge una condicin excepcional, se crea un
objeto que representa una excepcin y se lanza (throw) en el mtodo que
produce el error. El manejo de excepciones se gestiona mediante cinco
palabras reservadas: try, catch, throw, throws y finally.
Si al momento de ejecutar un programa ocurre un error, Java lanza una
excepcin, es un soporte que proporciona para el manejo de errores.
Las excepciones en Java son objetos de subclases de Throwable que
est definida en el paquete java.lang. Las excepciones se tienen que capturar
y manejar para que se pueda reanudar la ejecucin del programa.
Manejo de excepciones
Para capturar una excepcin se tiene que escribir el bloque que puede
generar un error dentro de try y para manejar esa excepcin se utiliza catch
como se muestra a continuacin:
try
{
// Cdigo de la aplicacin
}

catch(clase_de_excepcin e)
{
//Cdigo de tratamiento de esta excepcin
}

catch (otra_clase_de_excepcin e)
{
//Cdigo de tratamiento para otra clase de excepcin
}
finally{
//Cdigo
}

Un bloque try puede estar seguido de uno o ms bloques de catch.


Cada catch debe tener un parmetro de la clase Throwable o de alguna
subclase de sta. Cuando se lance una excepcin, el bloque catch que lo
atrape ser aquel cuyo parmetro sea de la clase o de una superclase de la
excepcin.
Clase de excepcin
Bloque de finalizacin
Si se desea realizar alguna accin por obligacin como cerrar un
archivo, liberar algn recurso externo que se haya adquirido, etc., se debe
poner el cdigo adecuado dentro de un bloque finally despus del bloque try o
de un bloque catch. El bloque finally debe ser siempre el ltimo.
La ejecucin del bloque finally queda garantizada independientemente
de que finalice o no la ejecucin del bloque try. Los bloques try y finally se
pueden utilizar conjuntamente sin que sea necesario incluir un bloque catch.

Declarar excepciones
La palabra reservada throws permite a un mtodo declarar las listas de
excepciones ( nombres de las clases de excepcin separados por comas) que
pueden lanzar. Esto tiene dos lecturas:
1.- Dar informacin a los usuarios de la clase que proporciona este mtodo
sobre
las
cosas
anormales
que
puede
hacer
el
mtodo.
2.-Escribir un mtodo que lance una o ms excepciones que no sean atrapadas
por el propio mtodo, sino por los mtodos que lo llamen.
Crear y lanzar excepciones
En Java podemos crear nuestras propias excepciones. Todos los tipos
de excepcin se corresponden con una clase derivada de Throwable, clase
raz de la jerarqua de clases de excepciones de Java. El paquete java.lang
proporciona dos subclases de Throwable que agrupan las excepciones que se
pueden lanzar, como consecuencia de los errores que pueden ocurrir en un
programa, en dos clases: Error y Exception. Los errores que ocurren en la
mayora de los programas se corresponden con excepciones de alguna de las
subclases de ExceptionError reservada para el tratamiento de los errores que
se puedan producir en la mquina virtual de Java.
Ejemplo:
public class EValorNoValido extends Exception
{
public EValorNoValido() {}
public EValorNoValido(String mensaje)
{
super(mensaje);
}
}

Estamos utilizando la clase anterior para crear una excepcin para un


error no valido, la superclase es Exception e implementa dos constructores,
uno sin parmetros y otro con un parmetro de tipo String. El parmetro de
tipo String es el mensaje que devolver el mtodo getMessage heredado de la
clase Throwable a travs de Exception. Para ello el constructor
EValorNoValido debe invocar al constructor de la superclase y pasar como
argumento dicha cadena, la cual ser almacenada como un miembro de datos
de la clase Throwable.
Ejemplo de aplicacin
public class MiClase
{
public void n(int x)
{
if(x==0)
throw new EValorNoValido("Error: valor cero");
}
}

Lanzar una excepcin equivale a crear un objeto de ese tipo de


excepcin. En este ejemplo lo que provoca el error es que el parmetro x del

mtodo n de MiClase es 0, en este caso el mtodo n lanza una excepcin de


la clase EValorNoValido creando un objeto de esta clase. Para crear (new)
ese objeto se invoca al constructor EValorNoValido pasando como argumento,
en este caso, la cadena "Error:valor cero";
Si un mtodo n lanza una excepcin debe declararlo, para que los
usuarios de MiClase, que es quien proporciona el mtodo n, estn informados
sobre las cosas anormales que puede hacer dicho mtodo.
public class MiClase
{
public void n (int x) throws EValorNoValido
{
if (x==0)
throw new EValorNoValido("Error: valor cero");
}

}
Otra alternativa es que el propio mtodo que lanza la excepcin la atrape
como se muestra en el siguiente ejemplo:
public class CMiClase
{
public void n(int x)
{
try
{
if(a==0)
throw new EValorNoValido("Error: valor cero");
}
catch(EValorNoValido e )
{
System.out.println(e.getMessage());
}
}
}

Escribir un mtodo que lance una o ms excepciones y l mismo las


atrape es anticiparse a las necesidades que pueda tener el usuario de la clase
que proporciona ese mtodo, en cuanto al tratamiento de la excepcin se
refiere.
Ejemplo
public class PruebaExcepcion{
public static void main(String [] args){
int [] a ={0,1,2,3,4,5};
try{
for (int i=0;i<6;i++){
System.out.println(a[+i+]es +a[i]);
}
}
catch(excepcion e) {
System.out.println(Excepcion: +e);
}
System.out.println(Cdigo que se puede ejecutar);
} }

También podría gustarte