Excepciones
- Situaciones anómalas que aparecen durante la ejecución de un programa.
- Cuando aparece una condición excepcional se crea un objeto Throwable que se envía al método que la ha generado.
- Su gestión permite la detección y corrección de errores en ejecución.
- Simplifican los programas ya que se diferencia el código normal del código de tratamiento de errores.
- Se crean programas mas robustos ya que en muchos casos si no se trata la excepción el programa no compila.
- Sólo se deben usar cuando no se puede resolver la situación anómala directamente en ese contexto.
Tipos de situaciones excepcionales.
Excepciones:
Situaciones mas o menos habituales que impiden completar la ejecución correcta del código. Generalmente el programador debe proporcionar el código que las trate o gestione.
· Ejemplos
Ø Error en el código o en los datos.
Ø Uso inadecuado de un método.
Errores
Representan situaciones de error normalmente no recuperables. El programador normalmente no tiene que proporcionar un tratamiento para ellas.
· Ejemplos:
ØNo se puede localizar y cargar una clase, se agota la memoria.
RuntimeException:
Excepciones que se dan durante la ejecución del programa.
Tipos de excepciones
· Predefinidas en el sistema
Se lanzan automáticamente cuando se realiza alguna operación no valida.
· Acceso a un objeto que no existe.
· Acceso a una posición de un array que no existe.
· División por cero.
· Generadas por el programador:
Ø El programa explícitamente genera una excepción al detectar una situación de error que no se puede resolver en ese contexto.
Ø Útil en situaciones de prueba y depuración.
Gestion de excepciones
Para gestionar excepciones hay que insertar el código donde se puede dar dentro de un bloque “try”. Se crea una lista de bloques “catch” adyacente, uno por cada posible excepción.
1.-Excepciones simples:
public class PruebaExcepciones {
public static void main(String args[]) {
int valor=5, cero=0;
int[] array = {1, 2, 3};
try {
valor = valor/cero; //división por cero
array[4]= 5; //acceso a una posición no disponible
}
catch( ArithmeticException e ) {
System.out.println( "Division por cero" );
}
catch( Exception e ) {
System.out.println( "Se ha producido un error" );
}
}
}
2.-Propagacion de excepciones:
public class PruebaExcepcion {
public static void main(String args[]) {
int valor=5, cero=0;
int[] array = {1, 2, 3};
try {
try {
valor = valor/cero; //división por cero
array[4]= 5; //acceso a una posición no disponible
}catch( ArithmeticException e ) {
System.out.println( "División por cero" );
throw e;
}catch( Exception e ) {
System.out.println( "Se ha producido un error" );
}
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
¿Cómo se Gestiona?
try {
// bloque de código donde puede producirse una excepción
}catch( TipoExcepción1 e ) {
// gestor de excepciones para TipoExcepción1
// se ejecuta si se produce una excepción de tipo TipoExcepción1
}catch( TipoExcepcion2 e ) {
// gestor de excepciones para TipoExcepción2
throw(e); // se puede volver a lanzar la excepción propagar
} finally {
// bloque de código que se ejecuta siempre, haya o no excepción
}
Ejemplos:
1.-Excepciones simples:
public class PruebaExcepciones {
public static void main(String args[]) {
int valor=5, cero=0;
int[] array = {1, 2, 3};
try {
valor = valor/cero; //división por cero
array[4]= 5; //acceso a una posición no disponible
}
catch( ArithmeticException e ) {
System.out.println( "Division por cero" );
}
catch( Exception e ) {
System.out.println( "Se ha producido un error" );
}
}
}
2.-Propagacion de excepciones:
public class PruebaExcepcion {
public static void main(String args[]) {
int valor=5, cero=0;
int[] array = {1, 2, 3};
try {
try {
valor = valor/cero; //división por cero
array[4]= 5; //acceso a una posición no disponible
}catch( ArithmeticException e ) {
System.out.println( "División por cero" );
throw e;
}catch( Exception e ) {
System.out.println( "Se ha producido un error" );
}
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
0 comentarios:
Publicar un comentario