Excepciones en poo

Solo disponible en BuenasTareas
  • Páginas : 5 (1118 palabras )
  • Descarga(s) : 0
  • Publicado : 17 de agosto de 2012
Leer documento completo
Vista previa del texto
Uso
Uso de excepciones en Java
En Java, cuando se produce un error en un método,
“se lanza” un objeto Throwable.
Cualquier método que haya llamado al método puede “capturar la
excepción” y tomar las medidas que estime oportunas.
Tras capturar la excepción, el control no vuelve al método en el que se
produjo la excepción, sino que la ejecución del programa continúa en el
punto donde sehaya capturado la excepción.
Consecuencia:
Nunca más tendremos que preocuparnos de “diseñar” códigos de error.

Jerarquía de clases para el manejo de excepciones en Java

#$

!"

Excepciones

-6-

© Fernando Berzal

Throwable
Clase base que representa todo lo que se puede “lanzar” en Java
Contiene una instantánea del estado de la pila en el momento en el
que se creó el objeto (“stack trace” o “call chain").
Almacena un mensaje (variable de instancia de tipo String)
que podemos utilizar para detallar qué error se produjo.
Puede tener una causa, también de tipo Throwable,
que permite representar el error que causó este error.

Error
Subclase de Throwable que indica problemas graves que una aplicación
no debería intentar solucionar (documentación de Java).
Ejemplos:Memoria agotada, error interno de la JVM…

Exception
Exception y sus subclases indican situaciones que una aplicación

debería tratar de forma razonable.
Los dos tipos principales de excepciones son:
RuntimeException (errores del programador, como una división

por cero o el acceso fuera de los límites de un array)
IOException (errores que no puede evitar el programador,

generalmenterelacionados con la entrada/salida del programa).

Excepciones

-7-

© Fernando Berzal

Captura de excepciones: Bloques try…catch
Se utilizan en Java para capturar las excepciones que se hayan podido
producir en el bloque de código delimitado por try y catch.
En cuanto se produce la excepción, la ejecución del bloque try termina.
La cláusula catch recibe como argumento un objetoThrowable.

// Bloque 1
try {
// Bloque 2
} catch (Exception error) {
// Bloque 3
}
// Bloque 4

Sin excepciones:

1→2→4

Con una excepción en el bloque 2:

1 → 2* → 3 → 4

Con una excepción en el bloque 1:

1*

// Bloque 1
try {
// Bloque 2
} catch (ArithmeticException ae) {
// Bloque 3
} catch (NullPointerException ne) {
// Bloque 4
}
// Bloque 5

Sin excepciones:1→2→5

Excepción de tipo aritmético:

1 → 2* → 3 → 5

Acceso a un objeto nulo (null):

1 → 2* → 4 → 5

Excepción de otro tipo diferente:

1 → 2*

Excepciones

-8-

© Fernando Berzal

// Bloque1
try {
// Bloque 2
} catch (ArithmeticException ae) {
// Bloque 3
} catch (Exception error) {
// Bloque 4
}
// Bloque 5

Sin excepciones:

1→2→5

Excepción de tipo aritmético:1 → 2* → 3 → 5

Excepción de otro tipo diferente:

1 → 2* → 4 → 5

¡Ojo! Las cláusulas check se comprueban en orden
// Bloque1
try {
// Bloque 2
} catch (Exception error) {
// Bloque 3
} catch (ArithmeticException ae) {
// Bloque 4
}
// Bloque 5

Sin excepciones:

1→2→5

Excepción de tipo aritmético:

1 → 2* → 3 → 5

Excepción de otro tipo diferente:

1 → 2* → 3 → 5¡ El bloque 4 nunca se llegará a ejecutar !

Excepciones

-9-

© Fernando Berzal

La cláusula finally
En ocasiones, nos interesa ejecutar un fragmento de código
independientemente de si se produce o no una excepción
(por ejemplo, cerrar un fichero que estemos manipulando).

// Bloque1
try {
// Bloque 2
} catch (ArithmeticException ae) {
// Bloque 3
} finally {
// Bloque 4
}// Bloque 5

Sin excepciones:

1→2→4→5

Excepción de tipo aritmético:

1 → 2* → 3 → 4 → 5

Excepción de otro tipo diferente:

1 → 2* → 4

Si el cuerpo del bloque try llega a comenzar su ejecución,
el bloque finally siempre se ejecutará…
Detrás del bloque try si no se producen excepciones
Después de un bloque catch si éste captura la excepción.
Justo después de que se...
tracking img