Você está na página 1de 4

Universidad Nacional de Loja. Patio Abad Andrea. M.D.E.

Patio, Andrea.. mayuri150293@gmail.com Universidad Nacional de Loja

Manejo de Excepciones
Resumen El manejo de excepciones permite a los programadores crear aplicaciones que puedan resolver las excepciones y corregir errores que se pueden presentar en la ejecucin de un programa, en el presente capitulo se conoce los principales tipos de excepciones y cuando utilizarlas e incluso como un programador puede crear sus propias excepciones. ndice de Trminoscatch, asercin, precondicin, poscondicin, finally. I. INTRODUCCIN En este captulo presentaremos el manejo de excepciones. Una excepcin es la indicacin de un problema que ocurre durante la ejecucin de un programa. El nombre excepcin implica que el problema ocurre con poca frecuencia; si la regla es que una instruccin generalmente se ejecuta en forma correcta, entonces la excepcin a la regla es cuando ocurre un problema. El manejo de excepciones le permite crear aplicaciones que puedan resolver las excepciones. En muchos casos, el manejo de una excepcin permite que el programa contine su ejecucin como si no se hubiera encontrado el problema. Un problema ms grave podra evitar que un programa continuara su ejecucin normal, en vez de requerir al programa que notifique al usuario sobre el problema antes de terminar de una manera controlada. Las caractersticas que presentamos en este captulo permiten a los programadores escribir programas tolerantes a fallas y robustos. El manejo de excepciones ayuda a mejorar la tolerancia a fallas de un programa. La excepcin arrayindexoutofboundsexception ocurre cuando hay un intento por acceder a un elemento ms all del fi n del arreglo. Dicho problema puede ocurrir si hay un error de desplazamiento por 1 en una instruccin for que manipula un arreglo. La excepcin classcastexception, que ocurre cuando hay un intento por convertir un objeto que no tiene una relacin es un con el tipo especificado en el operador de conversin.
Manejo de Excepciones.

La excepcin nullpointerexception, la cual ocurre cada vez que se utiliza una referencia null en donde se espera un objeto (por ejemplo, cuando hay un intento por adjuntar un componente de gui a un objeto container, pero el componente de gui no se ha creado todava). II. GENERALIDADES ACERCA DEL MANEJO DE EXCEPCIONES Con lenguajes de programacin que no soportan el manejo de excepciones, los programadores a menudo retrasan la escritura de cdigo de procesamiento de errores, o algunas veces olvidan incluirlo. Esto hace que los productos de software sean menos robustos. Java permite al programador tratar con el manejo de excepciones fcilmente, desde el comienzo de un proyecto. A. ENCERRAR CDIGO EN UN BLOQUE TRY Un bloque try consiste en la palabra clave try seguida de un bloque de cdigo, encerrado entre llaves ({}). El trmino bloque try se refiere algunas veces slo al bloque de cdigo que va despus de la palabra clave try. Para simplificar, usaremos el trmino bloque try para referirnos a lo que de cdigo que va despus de la palabra clave try, incluyendo esta palabra. El mtodo nextInt lanza una excepcin InputMismatchException si el valor ledo no es un entero vlido. La divisin que puede provocar una excepcin ArithmeticException no se ejecuta en el bloque try. B. ATRAPAR EXCEPCIONES El bloque try va seguido de dos bloques catch. Un bloque catch atrapa y maneja una excepcin. Un bloque catch empieza con la palabra clave catch y va seguido por un parmetro entre parntesis y un bloque de cdigo encerrado entre llaves. El trmino clusula catch se utiliza algunas veces para hacer referencia a la palabra clave catch, seguida de un bloque de cdigo, en donde el trmino bloque catch se refiere slo al bloque de cdigo que va despus de la palabra clave catch, sin incluirla.

Universidad Nacional de Loja. Patio Abad Andrea. M.D.E.

Para simplificar, usaremos el trmino bloque catch para referirnos al bloque de cdigo que va despus de la palabra clave catch, incluyendo esta palabra. Una excepcin no atrapada ocurre y no hay bloques catch que coincidan, Java utiliza un modelo de ejecucin de programas con subprocesamiento mltiple. Cada subproceso es una actividad paralela. Un programa puede tener muchos subprocesos. Si un programa slo tiene un subproceso, una excepcin no atrapada har que el programa termine. Si un programa tiene varios subprocesos, una excepcin no atrapada terminar slo el subproceso en el cual ocurri la excepcin. Sin embargo, en dichos programas ciertos subprocesos pueden depender de otros, y si un subproceso termina debido a una excepcin no atrapada, puede haber efectos adversos para el resto del programa. C. MODELO DE TERMINACIN DEL MANEJO DE
EXCEPCIONES

D. USO DE LA CLUSULA THROWS Ahora examinaremos el mtodo cociente. La porcin de la declaracin del mtodo se conoce como clusula throws. Esta clusula especifica las excepciones que lanza el mtodo. La clusula aparece despus de la lista de parmetros del mtodo y antes de su cuerpo. Contiene una lista separada por comas de las excepciones que lanzar el mtodo, en caso de que ocurra un problema. Un mtodo puede lanzar excepciones de las clases que se listen en su clusula throws, o en la de sus subclases. Hemos agregado la clusula throws a esta aplicacin, para indicar al resto del programa que este mtodo puede lanzar una excepcin ArithmeticException. III. CUNDO UTILIZAR EL MANEJO DE EXCEPCIONES El manejo de excepciones est diseado para procesar errores sincrnicos, que ocurren cuando se ejecuta una instruccin. Ejemplos comunes de estos errores que veremos en este libro son los ndices fuera de rango, el desbordamiento aritmtico, la divisin entre cero, los parmetros invlidos de mtodo, la interrupcin de subprocesos y la asignacin fallida de memoria. El manejo de excepciones no est diseado para procesar los problemas asociados con los eventos asncronos, los cuales ocurren en paralelo con, y en forma independiente de, el flujo de control del programa. IV. JERARQUA DE EXCEPCIONES EN JAVA Todas las clases de excepciones heredan, ya sea en forma directa o indirecta, de la clase Exception, formando una jerarqua de herencias. Los programadores pueden extender esta jerarqua para crear sus propias clases de excepciones.

Si ocurre una excepcin en un bloque try, este termina de inmediato y el control del programa se transfiere al primero de los siguientes bloques catch en los que el tipo del parmetro de excepcin coincide con el tipo de la excepcin que se lanz. Una vez que se maneja la excepcin, el control del programa no regresa al punto de lanzamiento, ya que el bloque try ha expirado. En vez de ello, el control se reanuda despus del ltimo bloque catch. Esto se conoce como el modelo de terminacin del manejo de excepciones. Algunos lenguajes utilizan el modelo de reanudacin del manejo de excepciones en el que, despus de manejar una excepcin, el control se reanuda justo despus del punto de lanzamiento. Despus de ejecutar un bloque catch, el flujo de control de este programa procede a la primera instruccin despus del ltimo bloque catch. La condicin en la instruccin dowhile es true, por lo que el control regresa al principio del ciclo y se le pide al usuario una vez ms que introduzca datos. Esta instruccin de control iterar hasta que se introduzcan datos de entrada vlidos. Despus, el bloque try termina. Si no se lanzan excepciones en el bloque try, se omiten los bloques catch y el control contina con la primera instruccin despus de los bloques catch. Ahora la condicin del ciclo dowhile es false, y el mtodo main termina.

Figura 1: Jerarqua de herencia de la clase Throwable.

Manejo de Excepciones.

Universidad Nacional de Loja. Patio Abad Andrea. M.D.E.

La figura 1 muestra una pequea porcin de la jerarqua de herencia para la clase Throwable, que es la superclase de la clase Exception. La clase Throwable tiene dos subclases: Exception y Error. La clase Exception y sus subclases representan situaciones excepcionales que pueden ocurrir en un programa en Java, y que pueden ser atrapadas por la aplicacin. La clase Error y sus subclases representan situaciones anormales que podran ocurrir en la JVM. Java clasifica a las excepciones en dos categoras: excepciones verificadas y excepciones no verificadas. Esta distincin es importante, ya que el compilador de Java implementa un requerimiento de atrapar o declarar para las excepciones verificadas. El tipo de una excepcin determina si es verificada o no verificada. Todos los tipos de excepciones que son subclases directas o indirectas de la clase RuntimeException son excepciones no verificadas. Todas las clases que heredan de la clase Exception pero no de la clase RuntimeException se consideran como excepciones verificadas; y las que heredan de la clase Error se consideran como no verificadas. Las clases de excepciones se pueden derivar de una superclase comn. Si se escribe un manejador catch para atrapar objetos de excepcin de un tipo de superclase, tambin se pueden atrapar todos los objetos de las subclases de esa clase. V. BLOQUE FINALLY Los programas que obtienen ciertos tipos de recursos deben devolver esos recursos al sistema en forma explcita, para evitar las denominadas fugas de recursos. Java realiza la recoleccin automtica de basura en la memoria que ya no es utilizada por los programas, evitando as la mayora de las fugas de memoria. Sin embargo, pueden ocurrir otros tipos de fugas de recursos en Java. El bloque finally es opcional, y algunas veces se le llama clusula finally. Si est presente, se coloca despus del ltimo bloque catch. Java garantiza que un bloque finally se ejecutar, se lance o no una excepcin en el bloque try correspondiente. Si una excepcin que ocurre en un bloque try no puede ser atrapada por uno de los manejadores catch de ese bloque try, el programa ignora el resto del bloque try y el control procede al bloque finally.

VI. LIMPIEZA DE LA PILA Cuando se lanza una excepcin, pero no se atrapa en un alcance especfico, la pila de llamadas a mtodos se limpia y se hace un intento de atrapar la excepcin en el siguiente bloque try exterior. Si ningn bloque catch atrapa a esta excepcin, y la excepcin es verificada, al compilar el programa se producir un error. VII.
PRINTSTACKTRACE, GETSTACKTRACE Y GETMESSAGE

La clase Throwable contiene un mtodo llamado printStackTrace, que enva al flujo de error estndar la pila de llamadas a mtodos, tambin proporciona un mtodo llamado getStackTrace, que obtiene la informacin de rastreo de la pila que podra imprimir print StackTrace y un mtodo llamado getMessage que devuelve la cadena descriptiva almacenada en una excepcin. VIII. EXCEPCIONES ENCADENADAS

Algunas veces un bloque catch atrapa un tipo de excepcin y despus lanza una nueva excepcin de un tipo distinto, para indicar que ocurri una excepcin especfica del programa. En las primeras versiones de Java, no haba mecanismo para envolver la informacin de la excepcin original con la informacin de la nueva excepcin, para proporcionar un rastreo completo de la pila, indicando en dnde ocurri el problema original en el programa. Esto haca que depurar dichos problemas fuera un proceso bastante difcil. Las excepciones encadenadas permiten que un objeto de excepcin mantenga la informacin completa sobre el rastreo de la pila. IX. DECLARACIN DE NUEVOS TIPOS DE EXCEPCIONES La mayora de los programadores de Java utilizan las clases existentes de la API de Java, de distribuidores independientes y de bibliotecas de clases gratuitas para crear aplicaciones de Java. Los mtodos de esas clases por lo general se declaran para lanzar las excepciones apropiadas cuando ocurren problemas. Si usted crea clases que otros programadores utilizarn en sus programas, tal vez le sea conveniente declarar sus propias clases de excepciones que sean especficas para los problemas que pueden ocurrir cuando otro programador utilice sus clases reutilizables.

Manejo de Excepciones.

Universidad Nacional de Loja. Patio Abad Andrea. M.D.E.

Una nueva clase de excepcin debe extender a una clase de excepcin existente, para poder asegurar que la clase pueda utilizarse con el mecanismo de manejo de excepciones. X. PRECONDICIONES Y POSCONDICIONES Una precondicin debe ser verdadera cuando se invoca a un mtodo. Las precondiciones describen las restricciones en los parmetros de un mtodo, y en cualquier otra expectativa que tenga el mtodo en relacin con el estado actual de un programa. Una poscondicin es verdadera una vez que el mtodo regresa con xito. Las poscondiciones describen las restricciones en el valor de retorno, y en cualquier otro efecto secundario que pueda tener el mtodo. XI. ASERCIONES Condiciones que deben ser verdaderas en un punto especfico de un mtodo al implementar y depurar una clase, ayudan a asegurar la validez de un programa al atrapar los errores potenciales e identificar los posibles errores lgicos durante el desarrollo. Las precondiciones y las poscondiciones son dos tipos de aserciones. Las precondiciones son aserciones acerca del estado de un programa a la hora de invocar un mtodo, y las poscondiciones son aserciones acerca del estado de un programa cuando el mtodo termina. XII. CONCLUSIONES

REFERENCIAS [1] Paul. J. Deitel, Harvey. M. Deitel.m G. O., Como Programar en Java, Pearson Education , 7ma ed., Ed. Mxico, 2008, pp. 578602. Autor: Andrea Patio Abad, estudiante de 4to modulo paralelo A de la carrera de Ingeniera en Sistemas del AEIRNNR de la Universidad Nacional e Loja. Loja-Julio-2012 Este documento es un resumen del Capitulo 13 del libro gua COMO PROGRAMAR EN JAVA, Sptima edicin de PAUL. J. DEITEL y HARVEY. M. DEITEL.

X
Andrea Patio Estudiante

En una aplicacin existen un sin numero de errores que se pueden solucionar con el uso de excepciones, permiten al programador eliminar el cdigo para manejar errores de la lnea principal de ejecucin del programa. Utilizar los bloques try para encerrar cdigo que puede lanzar una excepcin, utilizar los bloques catch para lidiar con las excepciones que puedan surgir. El modelo de terminacin del manejo de excepciones, indica que una vez que se maneja una excepcin, el control del programa no regresa al punto de lanzamiento. Existen algunas diferencias entre las excepciones verificadas y las no verificadas. Utilizar el bloque finally permite liberar recursos, ya sea que ocurra o no una excepcin. Existe la posibilidad de crear nuestras propias clases de excepciones. Las precondiciones y poscondiciones ayudan a los programadores a comprender las condiciones que deben ser verdaderas cuando se hace la llamada al mtodo, y cuando ste regresa.
Manejo de Excepciones.

Você também pode gostar