PDF de programación - Tema 2: Errores y Excepciones: Modelo y Gestión

Imágen de pdf Tema 2: Errores y Excepciones: Modelo y Gestión

Tema 2: Errores y Excepciones: Modelo y Gestióngráfica de visualizaciones

Publicado el 9 de Noviembre del 2018
826 visualizaciones desde el 9 de Noviembre del 2018
217,5 KB
9 paginas
Creado hace 13a (13/10/2010)
Tema 2: Errores y Excepciones:
Modelo y Gestión

Germán Moltó

Escuela Técnica Superior de Ingeniería Informática

Uni ersidad Politécnica de Valencia
Universidad Politécnica de Valencia

1

Objetivos y Bibliografía
Objetivos y Bibliografía
 Estudiar el tratamiento que se proporciona en Java a los errores

producidos durante la programación.

d id d

l



 Analizar la jerarquía de Excepciones y Errores en Java y su

representación como objetos de la clase Throwable
representación como objetos de la clase Throwable.

 Aprender la sintaxis que proporciona Java para la creación y gestión

de excepciones, así como su propagación a otros métodos.

 Bibliografía:

 Capítulo 7 del libro de Wiener, R. Pinson, L.J. Fundamentals of
OOP and Data Structures in Java (Cambridge University Press,
2000)
2000).

3

Tema 2: Errores y Excepciones: Modelo y Gestión
Tema 2: Errores y Excepciones: Modelo y Gestión

Errores y Excepciones Durante la Ejecución de un Programa

ÍÍndice general:
1.
2. Gestión de Excepciones en Java
3.

Lanzamiento de Excepciones en Java
P
Propagación y Captura de Excepciones

ió C t

d E

i

4
4.

2

Modelización Java de la Jerarquía de
Errores y Excepciones
Errores y Excepciones

 Estudio del tratamiento que da Java a los errores que se

q

q

J

producen al programar. En particular, se tratarán los
siguientes aspectos:
 Errores como Objetos Throwable (del paquete java.lang).
 Las subclases de Throwable: Error, Exception y Excepciones

de Usuario.

 Lanzamiento y Propagación de Excepciones: excepciones

capturadas y no capturadas. Cláusula throw y throws.

d Clá

l th

th

d

t

t

 Captura de Excepciones: Instrucción try-catch-finally.

 Ej

 Ejemplo:

l

 Reformulación del tratamiento de errores realizado en

lasFiguras
lasFiguras

4

Situaciones Inesperadas en la Ejecución
(I)(I)
 Situaciones inesperadas durante la ejecución:

 Un método intenta leer o escribir en un fichero no accesible.
 En el proyecto lasFiguras, al leer de teclado un círculo se le

asigna a su radio un carácter
asigna a su radio un carácter.

 Se realiza una división por cero o se calcula la raíz cuadrada de
un valor negativo, o se accede a una posición inexistente de un
array o se accede a un objeto null, etc.

 Se produce un fallo en la lógica de la aplicación, como en

lasFiguras al insertar una nueva figura en un grupo que ya está
lasFiguras al insertar una nueva figura en un grupo que ya está
lleno o intentar borrar una en un grupo donde no está.

 Se agota la memoria del sistema o se accede a una zona no

permitida de ésta.

d d é

 Si no realizamos una gestión de los situaciones

inesperadas el programa abortará abruptamente
inesperadas, el programa abortará abruptamente.

5

6

Situaciones Inesperadas en la Ejecución
(II)
(II)

 Una buena aplicación debe prever y gestionar las

y g

p

p

situaciones inesperadas que pueden ocurrir en ejecución.

 Debe como mínimo avisar de la situación producida y,
y,

p

siempre que sea posible, tratar de recuperarse para que
no afecte al normal desarrollo del programa.

p g

 Tipos de Situaciones Inesperadas:

 Errores Irrecuperables  Agotamiento de Memoria
 Errores Recuperables  Resto de situaciones inesperadas.

p

g

 Excepciones de Entrada / Salida
 Excepción de Fallo de Programación
 Excepción de Usuario

La Jerarquía Throwable
La Jerarquía Throwable

Obj
t
Object

Th
bl
Throwable

 Extracto de la Jerquía de
 Extracto de la Jerquía de

excepciones [API].

Error

Exception

RuntimeException

IOException

NullPointerException

Excepciones

de
de

Usuario

Mecanismo de Excepciones:
Generalidades
Generalidades
 Las excepciones en Java modelan las situaciones

inesperadas.
 Se corresponden con objetos de tipo Exception y se lanzan

d d l
)
desde los métodos (lo suelen indicar en su cabecera).

b
 Clasificamos las excepciones en dos tipos:

é d (l

i di



l

1.

Excepciones propias de Java:
 IOException: FileNotFoundException, UnknownHostException,

SocketException etc
SocketException, etc.

 RuntimeException: ArithmeticException, ClassCastException,

NullPointerException, IllegalArgumentException, etc.

 …
Excepciones de Usuario

2.

hereda de
hereda de

8

 Creadas por el programador para su aplicación.

C d



d

l

li



Definición de Excepciones de Usuario
Definición de Excepciones de Usuario
 Las Excepciones de Usuario, que no pertenecen al

estándar de Java, deben ser incorporadas a la jerarquía de
la clase Exception.

 Ejemplo:

 Aplicación de gestión de un grupo de figuras donde se desea

f

l

notificar el error al tratar de insertar en un grupo lleno.
public class GrupoLlenoException extends Exception {

d

l

ll



public GrupoLlenoException(String mensaje) {
public GrupoLlenoException(String mensaje) {

super(mensaje);

}
public GrupoLlenoException() {
public GrupoLlenoException() {
super();

}

}
}

9

Métodos que Lanzan Excepciones
Métodos que Lanzan Excepciones
 Por lo general, los métodos deben indicar en su

especificación las excepciones que pueden lanzar:
 Utilizando la clausula throws (separadas por comas).


public void insertar(Figura f) throws GrupoLlenoException{

}


 La excepción podrá ser lanzada dentro del código:

 De forma explícita (creando un objeto de tipo compatible

con la excepción y lanzándolo), ó

 Tras invocar a un método que la pueda lanzar
 Tras invocar a un método que la pueda lanzar.

11

¿Cómo se crea una nueva excepción?
¿Cómo se crea una nueva excepción?
 Una excepción es otro objeto más, por lo que se utiliza

de la misma manera:
 Podemos especificar un mensaje adicional o no.
 Podemos declarar una variable polimórfica cuyo tipo estático

sea Exception.


GrupoLlenoException ex = new GrupoLlenoException();



Exception ex = new GrupoLlenoException(“Completo!”);
Exception ex
new GrupoLlenoException( Completo! );


10

Ejemplo de Método que Lanza
Excepción: parseInt de Integer
Excepción: parseInt de Integer

 El método parseInt de la clase Integer

p

g

 Convierte una cadena que representa un número en un tipo

primitivo int.

 Si la cadena no representa un número (i.e. “45” vs “kjd”), lanza

una excepción.
public class Integer {


public static int parseInt(String s) throws NumberFormatException
public static int parseInt(String s) throws NumberFormatException
{

if (s == null) throw new NumberFormatException("null");
… //Más adelante también puede lanzarse la excepción.

}

}}

Excepciones Comprobadas (I)
Excepciones Comprobadas (I)
 Excepción Comprobada (checked):

 Cuando un método h declara en su definición que propaga una

Excepción.

 Al invocar al método h se debe capturar la excepción o
 Al invocar al método h, se debe capturar la excepción o

propagarla. Sino, error al compilar.

q

 Cualquier Excepción de Usuario es Comprobada.
 Las RuntimeException nunca son excepciones

p

p

Comprobadas
 Los métodos no están obligados a capturar o a propagar una

 Tampoco están obligados a
 Tampoco están obligados a

RuntimeException.

declarar que las lanzan
 Ej.: nextDouble() de Scanner.

¿Por qué piensas que NO se obliga a
capturar las excepciones que son
s bclase de R ntimeE ception?
subclase de RuntimeException?

13

Mecanismo de Gestión de Excepciones
Mecanismo de Gestión de Excepciones
 Invocar un método que lanza una excepción requiere una

de estas gestiones:
 Capturar la excepción (gestionándola), ó
 Propagar la excepción (indicándolo en su definición), ó
 Capturar, gestionar y propagar la excepción.

 La propagación de la excepción se hace en orden

inverso a la secuencia de llamadas realizada.
 Hasta que las gestiona algún método o la JVM aborta.

15

Excepciones Comprobadas (II)
Excepciones Comprobadas (II)

 Si un método especifica en su cabecera que lanza una

p

q

excepción, salvo que sea de tipo RuntimeException, los
métodos que lo invoquen están obligados a gestionarla.

 Si el método h sobrescribe al p, h no puede propagar más

Excepciones Comprobadas que p.
p

p

p

q

 Las Excepciones Comprobadas que lanza un método
p p g

deben ser de un tipo compatible al que declara propagar.
Es decir:
 si se declara propagar una excepción de tipo E,
 se deberá lanzar una excepción de tipo E o de cualquier

p

p

q

subclase de E.

14

Captura de Excepciones
Captura de Excepciones

try {

// código que puede lanzar las excepciones e1, e2, etc.

} catch (ExcepcionTipo1 e1) {

// código de gestión de e1, de tipo ExcepcionTipo1 o subclase de ésta.

} catch (ExcepcionTipo2 e2) {

// código de gestión de e2 de tipo ExcepcionTipo2 o subclase de ésta
// código de gestión de e2, de tipo ExcepcionTipo2 o subclase de ésta.

}finally {

/* Código que se ejecuta siempre, independientemente de que se
/ Código que se ejecuta siempre, independientemente de que se

produzca la excepcion. Sirve para hacer lo indispensable. */

}
 Ya que todas las excepciones son subclases de Exception,

siempre se puede realizar un try-catch general de Exception y
ca t rar c al
e ce ción
capturar cualquier tipo excepción.
16

ier ti

Ejemplo de Excepciones (I): Propagación
Ejemplo de Excepciones (I): Propagación

• Diseñar un módulo de grabación (clase ModuloGrabacion) que utilice la

funcionalidad de GrabacionDVD.
public class GrabacionDVD {

public void grabar() throws ExcepcionEnGrabacion { … }

}
public class ModuloGrabacion {

GrabacionDVD grabDVD;

public void crearDVD() throws ExcepcionEnGrabacion {


grabDVD.grabar();


}}

17

Ejemplo de Excepciones (III): Captura y
Propagación

p g

public class GrabacionDVD {

public void grabar() throws ExcepcionEnGrabacion { … }

}
public class ModuloGrabacion {

GrabacionDVD grabDVD;

public void crearDVD() throws ExcepcionEnGrabacion{
try{try{

grabDVD.grabar();
(

}catch(ExcepcionE
  • Links de descarga
http://lwp-l.com/pdf14163

Comentarios de: Tema 2: Errores y Excepciones: Modelo y Gestión (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad