sábado, 12 de diciembre de 2009

excepciones en java

La primer sección del Bloque es iniciada con el vocablo try y una llave ({ ) que indica el principio de la zona protegida, dentro de esta primer sección es colocado todo código que pueda generar algún tipo de error, al terminar esta sección se define un grupo de estructuras con el elemento catch.
Como se puede observar en la ilustración, cada vocablo catch es seguido de un paréntesis que contiene una Clase así como una referencia, estos son considerados los Datos de Entrada para cada sección catch; el tipo de Clases definidas dentro de cada sección catch depende del numero de "Exceptions" que pueden ser generadas por el programa; lo anterior permite definir un numero ilimitado de "Exceptions" cada uno con su propio código para manejar el error.
Para todo Bloque try/catch debe ser definida al menos una sección catch; si son definidos más de dos Clases para errores ("Exceptions") estas deben ser declaradas de más a menos especifica, siendo la menos especifica la Clase java.lang.Throwable; es de esta Clase que son Heredadas ("Inherited") todo "Exceptio

Sintaxis del Bloque try/catch/finally
Para los Bloques try/catch existe una variación que consiste en agregar una sección denominada finally, dicha estructura estaría compuesta de la siguiente manera:

try {
// Código que pueda generar Errores ("Exception's")
} catch(Tipo1 id1) {
// Manejar "Exception's" para la Clase Tipo1
} catch(Tipo2 id2) {
// Manejar "Exception's" para la Clase Tipo2
} catch(Tipo3 id3) {
// Manejar "Exception's" para la Clase Tipo3
} finally {
// Actividades que siempre ocurren
}
La utilización de finally es empleada dentro de un Bloque try/catch para realizar tareas que deben ser ejecutadas independientemente del comportamiento de errores.
Cuando se atrapa un error ("Exception") un programa queda inconcluso, es esta terminación abrupta la que puede causar que algún recurso/mecanismo permanezca asignado o mal utilizado; a través de una sección finally se garantiza que sea ejecutado un juego de instrucciones independientemente del tipo de error que pueda ocurrir; un uso muy común para una sección finally consiste en liberar conexiones hacia Bases de Datos que pudieran haber sido asignadas en la sección try.


Definición de Errores y Bloques try/catch/finally.
Aunque el tiempo ideal para encontrar errores es al momento de compilar un programa, esto no siempre es posible y por esta razón han sido diseñados mecanismos para encontrarlos al momento de ejecución ("Run-Time").La metodología más común para trabajar con errores en lenguajes de programación es interrumpir el flujo de ejecución e invocar otro código que maneje el error en cuestión; en el lenguaje Java a la ocurrencia de errores se le denomina "Exceptions" y al procesamiento de errores "Trap" (atrapar).
Como habría de esperarse, al encontrarse un error ("Exception") en Java es necesario invocar una Clase que realiza las respectivas tareas, para mandar llamar este tipo de Clases es necesario utilizar el vocablo throws; suponiendo que desea atrapar un error si determinada variable no ha sido inicializada, se utilizaría la siguiente sintaxis:
if(t == null)
throw new NullPointerException();
Al utilizar una definición similar a la anterior, se asume que ya se conoce el tipo de error que puede ser generado en el programa, sin embargo, este no siempre es el caso y por esta razón en Java se define una Zona Especifica donde puede ser generado un error y a su vez atrapado, esta Zona "Protegida" es el conocido bloque try/catch/finally, a continuación se describe la sintaxis de este bloque:
· Sintaxis del Bloque try/catch/finally.
Además de los errores ("Exceptions") ofrecidos en las Clases Base del JDK, es posible definir errores propietarios para llevar un control más estricto sobre la generación de errores:
· Definición y uso de una Clase para Errores ("Exceptions").
Datos de Entrada
A lo largo de los diversos métodos definidos en los distintos programas, se ha podido observar que estos definen sus Datos de Entrada seguido del nombre del mismo dentro de un paréntesis (calificadores nombre_del_metodo (datos_de_entrada)).
La sintaxis de los datos de entrada se compone de dos partes: El tipo de Clase/Primitivo, seguido de la referencia empleada dentro dentro del método; por "default" los métodos principales (main) en Java deben especificar un Arreglo de String's en su definición, esto con la intención de recibir parámetros al momento de ser llamada la Clase, a continuación se describe un ejemplo que hace uso de este mecanismo:
· Utilización de Datos de Entrada .
El uso de Datos de Entrada descrito anteriormente es trivial, ya que es realizado antes de iniciarse la ejecución de un programa, en la siguiente sección será descrito el uso de "Streams" para la lectura/escritura de datos en archivos y otros elementos.