sábado, 26 de mayo de 2012

5.1 Definición.

En todo programa existen errores inesperados en tiempo de ejecución, y también errores que no consideramos debido a nuestra propia inexperiencia como programadores. Unos de estos errores ocurren por ejemplo, al intentar acceder a un elemento del arreglo que está fuera del límite de nuestro arreglo, o cuando intentamos acceder a un archivo inexistente, entre otros.

 Normalmente estos errores interrumpen el flujo de ejecución de nuestros programas, hasta el extremo de provocar la terminación del programa en forma inmediata. Java hace uso de las excepciones1.1 para poder controlar los errores en tiempo de ejecución. En Java, casi todo los tipos de errores que puedan surgir en tiempo de ejecución lanzan excepciones, es decir, cuando ocurre un error dentro de un método de JAva, este método crea un objeto Exception, dicho objeto contiene información sobre la excepción, que incluye su tipo y el estado del programa cuando ocurrió el error. El sistema de ejecución es el responsable de buscar algún código para manejar el error. El manejo de excepciones en Java sigue una estructura como esta:

try {
//Codigo donde puede ocurrir un error
}
catch (ExcepcionA ex) { // Que se va a hacer en caso que
se lanze una Excepcion A }
...
catch (ExcepcionZ ex) { // Que se va a hacer en caso que
se lanze una Excepcion Z }

Mediante las excepciones se podrá evitar repetir continuamente código, en busca de un posible error, y avisar a otros objetos de una condición anormal de ejecución durante un programa.

Las excepciones señalan errores o situaciones poco habituales en la ejecución de un programa, por ejemplo una división de un valor entre cero, un intento de acceso a un String declarado, pero no instanciado, etc.

Ejemplo :

import java.util.Scanner;
import java.util.InputMismatchException;
public class usodeExcepciones {
    public static int cociente (int numerador, int denominador) throws ArithmeticException{
        return numerador/denominador;
    }
    public static void main(String[] args) {
        Scanner explorador = new Scanner(System.in);
        boolean continuarCiclo=true;
   do{
   try{
       System.out.print("Introduce un numero entero= ");
       int numerador = explorador.nextInt();
       System.out.print("Introduce un denominador entero= ");
       int denominador = explorador.nextInt();
       int resultado = cociente (numerador, denominador);
       System.out.printf("Resultado de %d / %d = %d", numerador, denominador, resultado);
       System.out.println();
       continuarCiclo=false;
       //fin del bloque try
   }
   catch(InputMismatchException objError){
       System.err.printf("Exception: %s\n", objError);
       explorador.nextLine();
       System.out.println("Debe de introducir valores enteros. Intente de nuevo");
   }
   catch(ArithmeticException objaritmetico){
       System.out.printf("Exception: %s\n", objaritmetico);
       System.out.println("Cero es un denominador invalido. Intente de nuevo");
   }
   }while (continuarCiclo=true);
         }
}

No hay comentarios:

Publicar un comentario