ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Excepciones En Java


Enviado por   •  22 de Abril de 2012  •  2.643 Palabras (11 Páginas)  •  686 Visitas

Página 1 de 11

UNIDAD V EXCEPCIONES

Introducción

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. Habitualmente, en programación, se incluyen tantas instrucciones condicionales como sea necesario para conseguir que una aplicación sea robusta, de esta manera, por ejemplo, en cada división de un valor entre una variable, antes se comprueba que el denominador no sea cero:

...............

Denominador = ..............

if (Denominador != 0) {

Numerador = ................

Resultado = Numerador / Denominador;

}

else

System.out.println (“No se puede realizar la división”);

.................

Utilizando el mecanismo de excepciones que proporciona Java, en nuestro ejemplo, en lugar de incluir una serie de instrucciones condicionales para evitar las distintas divisiones entre cero que se puedan dar, se escribe el programa sin tener en cuenta esta circunstancia y, posteriormente, se escribe el código que habría que ejecutar si la situación “excepcional” se produce:

Al hacer uso de excepciones, el bloque que codifica la porción de aplicación resulta más sencillo de entender, puesto que no es necesario incluir las instrucciones condicionales que verifican si puede darse la situación de excepción. En definitiva, si utilizamos el mecanismo de excepciones, podemos separar la lógica del programa de las instrucciones de control de errores, haciendo la aplicación más legible y robusta.

Las excepciones son objetos (clases) que se crean cuando se produce una situación extraordinaria en la ejecución del programa. Estos objetos almacenan información acerca del tipo de situación anormal que se ha producido y el lugar donde ha ocurrido. Los objetos excepción se pasan automáticamente al bloque de tratamiento de excepciones (el inferior de nuestro gráfico) para que puedan ser referenciados. La superclase de todas las excepciones es la clase Throwable. Sólo las instancias de esta clase o alguna de sus subclases pueden ser utilizadas como excepciones. La clase Trowable tiene dos clases derivadas: Error y Exception.

La clase Exception sirve como superclase para crear excepciones de propósito específico (adaptadas a nuestras necesidades), por ejemplo, si estamos diseñando una clase que lee secuencialmente bytes en una cinta digital de datos, podemos crear la excepción: FinDeCinta que se produce cuando el dispositivo físico ha alcanzado el final de la cinta. Otro ejemplo podría ser la implementación de una clase de envío de datos a un satélite no geoestacionario, donde convendría incluir una excepción FueraDeCobertura que se produzca cuando el satélite se encuentre fuera del alcance de nuestra antena parabólica. Un último ejemplo: si escribimos un driver de impresora podemos crear una clase derivada de Exception para que nos avise de la situación excepcional FinDePapel.

La clase Error sirve de superclase para una serie de clases derivadas ya definidas que nos informan de situaciones anormales relacionadas con errores de muy difícil recuperación producidos en el sistema.

No es obligatorio tratar las excepciones derivadas de la clase Error, ya que en la ejecución de una aplicación probablemente nunca se produzcan estas situaciones anormales, sin embargo, sí que es obligatorio hacer un tratamiento explícito de las excepciones derivadas de la clase Exception (no podemos ignorar la falta de cobertura de un satélite, el fin del papel en una impresora, el fin de datos en una lectura secuencial, etc.). En una aplicación bien diseñada e implementada es muchísimo más probable que se produzcan excepciones de tipo Exception que excepciones de tipo Error.

La clase Exception tiene un amplio número de clases derivadas proporcionadas por el SDK, por ejemplo existen excepciones predefinidas para el uso de ficheros, de SQL, etc. De todas estas subclases, RuntimeExeption tiene una característica propia: no es necesario realizar un tratamiento explícito de estas excepciones (de todas las demás clases derivadas de Exception si es necesario). Esto es debido a que, al igual que con las excepciones derivadas de Error, existen pocas posibilidades de recuperar situaciones anómalas de este tipo. Entre las clases derivadas de RuntimeException se encuentran:

El siguiente gráfico muestra las clases más importantes en el uso de excepciones y su jerarquía. En las clases no sombreadas es obligatorio realizar un tratamiento explícito de las excepciones, en las clases sombreadas no es necesario este tratamiento

Sintaxis y funcionamiento con una sola excepción

En el apartado anterior adelantábamos el diseño básico del tratamiento de excepciones: separar el código de los programas del código de control de situaciones excepcionales en los programas, y los ilustrábamos gráficamente con el siguiente ejemplo:

El bloque superior representa el código del programa y se le denomina bloque de “intento” (try). Aquí se introduce el código del programa susceptible de causar cierto tipo de excepciones. Las instrucciones se incluyen en un bloque con la siguiente sintaxis:

try {

// instrucciones susceptibles de causar cierto tipo de excepciones

}

El bloque inferior contiene las instrucciones de control de situaciones excepcionales. La sintaxis es:

catch (TipoDeExcepcion Identificador) {

// instrucciones de control de situaciones excepcionales

}

Entre el bloque try y el bloque catch no puede haber ninguna instrucción. Ambos bloques se encuentran ligados en ejecución.

El funcionamiento es el siguiente: se ejecutan las instrucciones del bloque try hasta que se produzca la situación de excepción de tipo TipoDeExcepcion; nótese que, habitualmente, no se producirá la excepción

...

Descargar como (para miembros actualizados)  txt (17.8 Kb)  
Leer 10 páginas más »
Disponible sólo en Clubensayos.com