602
Capítulo 13 Manejo de excepciones
El programador utiliza las aserciones principalmente para depurar e identifi car errores lógicos en una aplica-
ción. De manera predeterminada, las aserciones están deshabilitadas al ejecutar un programa, ya que reducen el
rendimiento y son innecesarias para el usuario del programa. Para habilitar las aserciones en tiempo de ejecución,
use la opción de línea de comandos
–ea
del comando
java
. Para ejecutar el programa de la fi gura 13.9 con las
aserciones habilitadas, escriba
java –ea PruebaAssert
No debe encontrar ningún error tipo
AssertionError
durante la ejecución normal de un programa escrito
en forma apropiada. Dichos errores sólo deben indicar errores en la implementación. Como resultado, nunca se
debe atrapar una excepción tipo
AssertionError
. En vez de ello, debemos permitir que el programa termine al
ocurrir el error, para poder ver el mensaje de error; después hay que localizar y corregir el origen del problema.
Como los usuarios de las aplicaciones pueden elegir no habilitar las aserciones en tiempo de ejecución, no debe-
mos usar la instrucción
assert
para indicar problemas en tiempo de ejecución en el código de producción. En
vez de ello, debemos usar el mecanismo de las excepciones para este fi n.
13.14 Conclusión
En este capítulo aprendió a utilizar el manejo de excepciones para lidiar con los errores en una aplicación. Apren-
dió que el manejo de excepciones permite a los programadores eliminar el código para manejar errores de la “línea
principal” de ejecución del programa. Vio el manejo de errores en el contexto de un ejemplo de división entre
cero. Aprendió a utilizar los bloques
try
para encerrar código que puede lanzar una excepción, y cómo utilizar
los bloques
catch
para lidiar con las excepciones que puedan surgir. Aprendió acerca del modelo de terminación
del manejo de excepciones, que indica que una vez que se maneja una excepción, el control del programa no
regresa al punto de lanzamiento. Conoció la diferencia entre las excepciones verifi cadas y no verifi cadas, y cómo
especifi car mediante la cláusula
throws
que las excepciones específi cas que ocurran en un método serán lanzadas
por ese método al método que lo llamó. Aprendió a utilizar el bloque
finally
para liberar recursos, ya sea que
ocurra o no una excepción. También aprendió a lanzar y volver a lanzar excepciones. Después, aprendió a obtener
información acerca de una excepción, mediante el uso de los métodos
printStackTrace
,
getStackTrace
y
getMessage
. El capítulo continuó con una discusión sobre las excepciones encadenadas, que permiten a los pro-
gramadores envolver la información de la excepción original con la información de la nueva excepción. Después,
vimos las generalidades acerca de cómo crear sus propias clases de excepciones. Presentamos las precondiciones
y poscondiciones para ayudar a los programadores que utilizan sus métodos a comprender las condiciones que
deben ser verdaderas cuando se hace la llamada al método, y cuando éste regresa. Cuando no se cumplen las
precondiciones y poscondiciones, los métodos generalmente lanzan excepciones. Por último, hablamos sobre la
instrucción
assert
y cómo puede utilizarse para ayudarnos a depurar los programas. En especial, esta instrucción
se puede utilizar para asegurar que se cumplan las precondiciones y poscondiciones. En el siguiente capítulo
aprenderá acerca del procesamiento de archivos, incluyendo la forma en que se almacenan los datos persistentes
y cómo se manipulan.
16
17
System.out.printf(
"Usted escribio %d\n"
, numero );
18
}
// fin de main
19
}
// fin de la clase PruebaAssert
Escriba un numero entre 0 y 10:
5
Usted escribio 5
Figura 13.9
| Verifi car con
assert
que un valor se encuentre dentro del rango. (Parte 2 de 2).
Escriba un numero entre 0 y 10:
50
Exception in thread "main" java.lang.AssertionError: numero incorrecto: 50
at PruebaAssert.main(PruebaAssert.java:15)
13_MAQ_CAP_13_DEITEL.indd602
4/19/081:27:43AM