martes, 4 de diciembre de 2012

Excepciones Parte 1: Definición y Excepciones Marcadas.

Buenas amigos, llevaba algún tiempo dándole vueltas a la cabeza y temiendo el día en que tuviese que escribir un tema sobre las Excepciones ¿por qué? pues porque me resultan pesadas de explicar y a veces a la gente le resulta difícil de entender,aunque eso no quita que sea uno de los apartados más importantes de java y bien va a merecer todos los esfuerzos que le ponga. Bien para mitigar mi desesperación y la vuestra, voy a dividir el apartado de Excepciones en 4 partes:
        1. Excepciones Marcadas
        2. Excepciones No Marcadas
        3. Excepciones Personalizadas y Métodos de Excepciones.
        4. Definición de las Excepciones más utilizadas.


Bien, ¿qué es una Excepción?. Es una situación "imposible de procesar" que se produce durante la ejecución de un programa, por ejemplo:
        • int a[]=new int[2];
Este array tiene 2 posiciones:
        • a[0];
        • a[1];
Si nosotros hacemos lo siguiente:
        • System.out.print(a[2]);
Nos saltará una Excepción, ya que es "imposible" acceder a esa posición del array. Una vez la Exception salta, la ejecución del programa finaliza, pero como nosotros no queremos que eso ocurra, vamos a aprender a capturarlas para que no termine la ejecución del programa.

Además de Excepciones también es posible que se produzcan errores. Un error es una situación que escapa al control del desarrollador, el programa no deberá intentar recuperarse del error. Esto es debido quizás por algún tipo de fallo en la JVM o por falta de memoria para ejecutar la aplicación, etc. No le daremos más vueltas a los errores en este tema, solo mencionarlo para que quede claro.

Cada Excepción tiene una subclase de "Exception", aquí voy a poner algunas, no todas, mientras que los errores son subclase de "Error", ambas, (Exception y Error) son subclases de "Throwable":


Y en la siguiente imagen podemos observar la jerarquía de la clase Exception:
No están todas, solo he puesto unas pocas. Los Box me han salido un poco recortados, todas las excepciones acaban con la palabra "Exception" que algunas se han recortado un poco.

Bien, como dijimos anteriormente, una excepción puede ser:

          • Marcada
          • No Marcada
Las excepciones Marcadas son aquellas que son obligatorias capturar. Normalmente estas excepciones son generadas por algunos métodos de determinadas clases.
Todas las excepciones, MENOS "RunTimeException y sus subclases", son Marcadas. Esto es importante, TODAS las excepciones son Marcadas EXCEPTO "RunTimeException y sus subclases". Dicho esto 2 veces, continuamos.

Como estamos obligados a capturar las Excepciones Marcadas de otros métodos, debemos utilizar la palabra clave "throws+ ListaDeExcepciones" (Puede ser que tenga más de una excepción generada), la cual se declarará después de la definición del método:

Supongamos que utilizamos un método de otra clase que tenga declaradas la excepcion "IOException" y "SQLException", cuando queramos utilizar ese método en otra clase deberemos poner:
        • public void unMetodo() throws IOException , SQLException{...}
Como podéis observar, ponemos el "throws" y las excepciones, separadas por una coma, entre la lista de argumentos y la apertura de llaves.

De todas maneras no preocuparse mucho por esto, ya que eclipse, netbeans, o cualquier otro, te avisa cuando utilizas un método de otra clase y debes capturar las excepciones, aunque nunca está de más saber porque eclipse te hace eso.Ya saben "el conocimiento es poder".

No les doy más la brasa, lo dejamos con las Excepciones Marcadas, en el próximo tema se va a poner un poco más tedioso ya que tendremos que utilizar los bloques try,catch,finally. Un saludo a todos.

2 comentarios: