



Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Apuntes del curso universitario de Informatica sobre excepciones y aserciones en JAVA - Utiliza las Excepciones en Java. Una excepción es una condición anormal que se produce en una porción de código durante su ejecución.
Tipo: Apuntes
1 / 5
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!




http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Throwable.html
Que pasa si no se puede abrir
Que pasa si no hay memoria suficiente
Que pasa si falla la lectura
Que pasa si no determinamos la longitud
Que pasa si no se puede cerrar el archivo
Chapter 3 Outline: Computing Fundamentals with Java
©Rick Mercer
Tratamiento Clásico de Errores
tipoDeCódigoDeError leerFichero { tipoDeCódigoDeError códigoDeError = 0; abrir el fichero; if (el fichero está abierto) { determinar la longitud del fichero; if (se consigue la longitud del fichero) { reservar la memoria suficiente; if (se consigue la memoria) { copiar el fichero en memoria; if (falla la lectura) { códigoDeError = -1; } } else { códigoDeError = -2; } } else { códigoDeError = -3; } cerrar el fichero; if (el fichero no se cerró && códigoDeError == 0){ códigoDeError= -4; } else{ códigoDeError=-5; } else { códigoDeError=-6; } return códigoDeError }
Tratamiento de Excepciones
¿Qué es una excepción?
Cuando ocurre un error en un método éste crea un
objeto excepción ( una excepción ) y lo entrega al
sistema de ejecución ( lanza una excepción ).
Este objeto contiene información sobre el error,
incluido su tipo y el estado del programa donde
ocurrió.
El sistema de ejecución recorre la pila de llamadas
buscando un método que contenga un bloque de
código que maneje la excepción ( manejador de
excepción ).
Excepciones
Verificadas Vs. No Verificadas
Verificadas:
Su tratamiento es obligatorio y el compilador así lo
chequea.
Todas las hijas de Exception, menos las hijas de
RuntimeException.
No Verificadas:
Su tratamiento no es obligatorio y el compilador
no lo chequea.
Todas aquellas hijas de Error y de
RuntimeException.
La instrucción try-catch
Las instrucciones que pueden lanzar excepciones se
encierran en bloques try.
Los manejadores de excepciones se incluyen en
bloques catch asociados a éstos.
Las instrucciones de un bloque catch son ejecutadas
cuando se invoca dicho manejador de excepciones.
El tratamiento de las excepciones
public void escribirLista() { PrintWriter out = null; try { out = new PrintWriter(new FileWriter(“out.txt”)); for (int i = 0; i < SIZE; i++) { out.println(“valor: ” + i + “ = ” + v[i]); } out.close(); } catch (ArrayIndexOutOfBoundsException e) { System.err.println(“Índice fuera de rango”);} catch (IOException e) { System.err.println(“Error al abrir o cerrar out.txt");} }
Chapter 3 Outline: Computing Fundamentals with Java
©Rick Mercer
finally y el tratamiento por defecto
public class DivisionPorCero { public void división() { int num1 = 10, num2 = 0; try { System.out.println( num1 + " / " + num2 + " = " + (num1 / num2)); } finally { System.out.println(“Finally Hecho.”); } System.out.println("Volviendo de división."); } public static void main(String[] args) { new DivisionPorCero().división(); System.out.println("Volviendo de main."); } } Salida: Finally Hecho. java.lang.ArithmeticException: / by zero at DivisionPorCero.división(DivisionPorCero.java:17) at DivisionPorCero.main(DivisionPorCero.java:22) Exception in thread "main"
Propagación de excepciones
public void escribirLista() throws IOException, ArrayIndexOutOfBoundsException { PrintWriter out = new PrintWriter( new FileWriter(“out.txt”)); for (int i = 0; i < SIZE; i++) { out.println(“valor: ” + i + “ = ” + v[i]); } out.close(); }
La instrucción throw
Las excepciones son lanzadas con la
instrucción throw.
Excepciones Propias
Un usuario puede definir sus propias
excepciones
Y ahora puede lanzarse como las demás:
Aserciones (assertions)
Una aserción es una condición lógica insertada
en nuestro código fuente.
La idea es expresar condiciones que asumimos
que son ciertas. El sistema se encargará de
comprobarlas y avisar mediante una excepción
en caso de que no se cumplan.
Chequeos de integridad.
Semántica de la Aserciones
assert expresion;
Si el resultado de evaluar expresión es true, la
ejecución continua normalmente. En caso
contrario, se lanza una exception de tipo
AssertionError.
assert expresion1 : expresion2;
Si el resultado es true, la ejecución continúa. Si el
resultado es false, entonces se evalúa expresion2 y
el resultado se pasa como argumento al constructor
del AssertionError lanzado.
Chapter 3 Outline: Computing Fundamentals with Java
©Rick Mercer
Usos de las Aserciones
Precondiciones: impone restricciones a la ejecución
de un código, p.e. calcular raíces cuadradas de
números estrictamente positivos, assert (x>0).
Postcondiciones: impone restricciones después de la
ejecución de un código, p.e. ordenar los elementos de
un vector, entonces comprobar tal acción, assert
(v2.estaOrdenado());
Control del flujo: permiten comprobar en tiempo de
ejecución que el flujo del programa es correcto.
Ventajas de las Aserciones
Las aserciones suponen un trabajo extra para el programa, pero el trabajo se compensa durante el desarrollo y las pruebas.
Utiles en tiempo de desarrollo y depurado ya que ayudan a seguir la ejecución del código de forma
sencilla y limpia.
Las aserciones parecen más indicadas cuando se da por supuesto que una condición se cumple y se desea confirmar que efectivamente es así.
Si se detecta una situación de fallo, conviene activar las aserciones para afinar rápidamente la avería.
Criterios…
Son las aserciones un arma poderosa para detectar
errores antes de perder el control del programa; pero hay que usarla con prudencia y sabiduría:
NO se deben usar a la entrada de métodos públicos.
NO se deben usar para detectar errores en los datos de
entrada al programa.
SI se deben usar a la entrada de métodos privados.
SI se deben usar a la salida de métodos públicos o
privados.
SI se deben usar para chequear como suponemos que
están las variables y estructuras de datos internas..
…Criterios
SI se deben usar en la cláusula else de construcciones
y switch cuando todos los casos correctos están
explícitos (es decir, cuando la rama else no debería
tomarse jamás)
SI se deben usar en el último else de cadenas if ... else
if ... switch cuando todos los casos correctos están
explícitos (es decir, cuando el último else no debería
tomarse jamás)
SI se deben usarse en bucles largos (siguiendo el
concepto de control de bucle)