PDF de programación - Fundamentos de Computadores y Lenguajes - 6. Tratamiento de errores

Imágen de pdf Fundamentos de Computadores y Lenguajes - 6. Tratamiento de errores

Fundamentos de Computadores y Lenguajes - 6. Tratamiento de erroresgráfica de visualizaciones

Publicado el 6 de Junio del 2017
673 visualizaciones desde el 6 de Junio del 2017
268,1 KB
16 paginas
Creado hace 15a (05/05/2009)
UNIVERSIDAD
DE CANTABRIA

Fundamentos de Computadores y
Lenguajes
1. Elementos básicos de los lenguajes
2. Instrucciones de control
3. Tipos de datos
4. Métodos
5. Modularidad y Abstracción
6. Tratamiento de errores
7. Entrada/salida simple
8. Entrada/salida con ficheros

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN
4

© Michael González Harbour

5/ma/09

1

UNIVERSIDAD
DE CANTABRIA

Fundamentos de Computadores y
Lenguajes
6. Tratamiento de errores
• 1. Tratamiento de errores por paso de parámetros
• 2. Excepciones
• 3. Bloques de tratamiento de excepciones
• 4. Errores o excepciones predefinidos
• 5. Instrucciones try anidadas
• 6. Lanzar excepciones
• 7. Usar tus propias excepciones
• 8. La cláusula finally
• 9. Principales formas de gestión de errores
• 10. Cuándo usar excepciones

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

2

1. Tratamiento de errores por paso de
parámetros
En los lenguajes de programación más antiguos (C, Fortran, ...)
Cada método o función retorna un valor
• generalmente un código numérico indicando si había habido

UNIVERSIDAD
DE CANTABRIA

error o no, y cuál

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

3

Ejemplo de tratamiento de errores por
paso de parámetros

UNIVERSIDAD
DE CANTABRIA

error=funcion1(...);
if (error==1) {
mostrar mensaje error 1;
} else if (error==2) {
mostrar mensaje error 2;
} else {
error=funcion2(..);
if (error==1) {
mostrar mensaje error 1;
} else if (error==3) {
mostrar mensaje error 3;
} else {
...
}
}

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

4

Inconvenientes
• el código de chequeo de error aparece por todas partes,

mezclado con el código normal

UNIVERSIDAD
DE CANTABRIA

• en muchos casos el chequeo de error se omite por “pereza” o

desconocimiento
-

lleva a situaciones de error que pasan inadvertidas

funcion1();
funcion2();
...

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

5

2. Excepciones
Son un mecanismo especial para gestionar errores
• Separan claramente el tratamiento de errores del código normal
• Evitan que haya errores que pasen inadvertidos
• Propagan de forma automática los errores desde los métodos

UNIVERSIDAD
DE CANTABRIA

más internos a los más externos

• Permiten agrupar en un lugar común el tratamiento de errores

que ocurren en varios lugares del programa

Las excepciones se lanzan para avisar de un error:
• automáticamente, cuando el sistema detecta un error
• explícitamente cuando el programador lo establezca
Presentes en lenguajes modernos (Java, Ada, C++,...)

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

6

Ejemplo de bloque de tratamiento de
excepciones

UNIVERSIDAD
DE CANTABRIA

try {
funcion1();
funcion2();
...
} catch (error e) {
tratamiento del error;
}

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

7

Mecanismo
Las excepciones en Java son objetos de una clase extendida de
otra clase especial llamada Throwable.
Cuando ocurre un error en una línea de código:
• Se crea una instancia de la excepción, y se lanza (throw) la
excepción

UNIVERSIDAD
DE CANTABRIA

• El bloque que contiene esa línea de código se aborta en ese

momento

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

8

Mecanismo (cont.)
• El bloque donde ocurre la excepción puede decidir tratarla
(catch) o dejarla pasar
- Si se trata, se ejecutan las instrucciones de un manejador, la
situación de error termina, y se sigue por el siguiente bloque

UNIVERSIDAD
DE CANTABRIA

• Si se deja pasar, el siguiente bloque puede a su vez tratarla o

dejarla pasar
- Si nadie la trata, el programa se interrumpe y aparece un mensaje

de error

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

9

Ejemplo de elevación implícita: División
por cero

UNIVERSIDAD
DE CANTABRIA

import fundamentos.*;
public class DivisionCero {
public static void main(String[] args) {
int i,j;
Lectura leer=new Lectura ("Enteros");

leer.creaEntrada("i",0);
leer.creaEntrada("j",0);
leer.espera("introduce datos");
i=leer.leeInt("i");
j=leer.leeInt("j");
System.out.println("i/j="+i/j);
System.out.println("Fin del programa");
} // main
} // DivisionCero

Cuando j vale 0 se lanza
ArithmeticException

Cuando se eleva la excep-
ción esta línea no se ejecuta

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

10

3. Bloques de tratamiento excepciones
La forma general de escribir un bloque en el que se tratan
excepciones es:

UNIVERSIDAD
DE CANTABRIA

try {
instrucciones;
} catch (ClaseExcepcion1 e) {
instrucciones de tratamiento;
} catch (ClaseExcepcion2 e) {
instrucciones de tratamiento;
}

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

11

Ejemplo: división por cero con
tratamiento

UNIVERSIDAD
DE CANTABRIA

int i,j;
Lectura leer=new Lectura ("Enteros");
try {
leer.creaEntrada("i",0);
leer.creaEntrada("j",0);
leer.espera("introduce datos");
i=leer.leeInt("i");
j=leer.leeInt("j");
System.out.println("i/j="+i/j);
} catch (ArithmeticException e) {
Mensaje error = new Mensaje();
error.escribe("Detectada excepcion: "+e);
}
System.out.println("Fin del programa");

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

12

Tratamiento general
Es posible poner un tratamiento específico para una excepción,
como en el ejemplo, o uno general:

UNIVERSIDAD
DE CANTABRIA

} catch (Exception e) {
instrucciones de tratamiento;
}
El tratamiento general es cómodo pero no es recomendable,
• puede ocurrir un tratamiento inadecuado para una excepción no

prevista

Las excepciones se pueden concatenar a un String
• lo que las transforma en texto que describe el error

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

13

4. Errores o excepciones predefinidos
Jerarquía de las excepciones

UNIVERSIDAD
DE CANTABRIA

Throwable

se pueden

tratar

no se tratan

Exception

Error

no es

obligatorio
tratarlas

RuntimeException

ExcepcionUsuario

es

obligatorio
tratarlas

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

14

Algunas excepciones no comprobadas
(clase RuntimeException)

UNIVERSIDAD
DE CANTABRIA

ArithmeticException
ArrayIndexOutOfBoundsException Índice de array fuera de límites

Error aritmético (x/0, ...)

ArrayStoreException
IllegalArgumentException

IndexOutOfBoundsException

NegativeArraySizeException
NullPointerException
NumberFormatException
StringIndexOutOfBounds

(<0 o >=length)
Tipo incorrecto al crear un array
Argumento ilegal en la llamada a
un método
Indice fuera de límites (p.e., en
un ArrayList)
Tamaño de array negativo
Uso de una referencia nula
Formato de número incorrecto
Indice usado en un String está
fuera de límites

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

15

5. Instrucciones try anidadas
Las instrucciones try se pueden anidar cada tratamiento trata las
excepciones de su bloque
Si la excepción no se trata se le pasa al bloque de fuera
El anidamiento puede ser explícito, como en el ejemplo, o implícito
en la llamada a un método.

UNIVERSIDAD
DE CANTABRIA

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

16

Sintaxis de las instrucciones try
anidadas

UNIVERSIDAD
DE CANTABRIA

try {
instrucciones;
try {
instrucciones;
} catch (Exception e) {
manejador;
} // try interno
más instrucciones;
} catch (Exception e) {
otro manejador;
} // try externo

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

17

UNIVERSIDAD
DE CANTABRIA

6. Lanzar excepciones
Se pueden lanzar con:

throw objetoExcepcion;
throw new NombreExcepcion();
Y si es predefinida

throw new NombreExcepcion("mensaje");
Ejemplo:
...
if (clave==null) {
throw new NullPointerException
("clave es nula");
}

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

18

Lanzar la misma excepción
En ocasiones se eleva en un manejador la misma excepción:

UNIVERSIDAD
DE CANTABRIA

catch (Exception e) {
System.out.println
("Detectada excepcion "+e);
throw e;
}

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

19

7. Usar tus propias excepciones
Puedes crear tus propias excepciones y utilizarlas para indicar
errores:

UNIVERSIDAD
DE CANTABRIA

public class MiExcepcion extends Exception {};
Y se pueden usar desde un método en otra clase:
public class ClaseMia {
public void metodo() {
try {
throw new MiExcepcion();
} catch (MiExcepcion e) {
System.out.println("excepcion "+e);
} // try
} // metodo
} // ClaseMia

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

20

Usar tus propias excepciones (cont.)
Si un método eleva una excepción que no sea RuntimeException
(p.e. una tuya), debe:
• tratarla
• o declararla con una cláusula "throws"
Sintaxis para cláusula throws

UNIVERSIDAD
DE CANTABRIA

public tipo nombreMetodo (parametros)
throws NombreExcepcion1, NombreExcepcion2
{
declaraciones;
instrucciones; // lanzan las excepciones
}

DEPARTAMENTO DE MATEMÁTICAS,
ESTADÍSTICA Y COMPUTACIÓN

© Michael González Harbour

5/ma/09

21

UNIVERSIDAD
DE CANTABRIA

Ejemplo
Clase NoCa
  • Links de descarga
http://lwp-l.com/pdf4304

Comentarios de: Fundamentos de Computadores y Lenguajes - 6. Tratamiento de errores (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