606

Capítulo 13 Manejo de excepciones

13.3

¿Por qué son las excepciones particularmente apropiadas para tratar con los errores producidos por los métodos 

de las clases en la API de Java?

13.4

¿Qué es una “fuga de recursos”?

13.5

Si no se lanzan excepciones en un bloque 

try

, ¿hacia dónde procede el control cuando el bloque 

try

 completa 

su ejecución?

13.6

Mencione una ventaja clave del uso de 

catch(Exception

nombreExcepción

)

.

13.7

¿Debe una aplicación convencional atrapar los objetos 

Error

? Explique.

13.8

¿Qué ocurre si ningún manejador 

catch

 coincide con el tipo de un objeto lanzado?

13.9

¿Qué ocurre si varios bloques 

catch

 coinciden con el tipo del objeto lanzado?

13.10 

¿Por qué debería un programador especifi car un tipo de superclase como el tipo en un bloque 

catch

?

13.11 

¿Cuál es la razón clave de utilizar bloques 

finally

?

13.12 

¿Qué ocurre cuando un bloque 

catch

 lanza una excepción 

Exception

?

13.13 

¿Qué hace la instrucción 

throw

referenciaExcepción?

13.14 

¿Qué ocurre a una referencia local en un bloque 

try

, cuando ese bloque lanza una excepción 

Exception

?

Respuestas a los ejercicios de autoevaluación

13.1 

Agotamiento de memoria, índice de arreglo fuera de límites, desbordamiento aritmético, división entre cero, 

parámetros inválidos de método.

13.2

a) El manejo de excepciones está diseñado para manejar las situaciones que ocurren con poca frecuencia y que 

a menudo provocan la terminación del programa, no situaciones que surjan todo el tiempo. b) Por lo general, el fl ujo 
de control con estructuras de control convencionales es más claro y efi ciente que con las excepciones. c) Las excepciones 
“adicionales” pueden interponerse en el camino de las excepciones de tipos de errores genuinos. Es más difícil para el 
programador llevar el registro de un número más extenso de casos de excepciones.

13.3

Es muy poco probable que los métodos de clases en la API de Java puedan realizar un procesamiento de errores 

que cumpla con las necesidades únicas de todos los usuarios.

13.4

Una “fuga de recursos” ocurre cuando un programa en ejecución no libera apropiadamente un recurso cuando 

éste ya no es necesario. 

13.5

Los bloques 

catch

 para esa instrucción 

try

 se ignoran y el programa reanuda su ejecución después del últi-

mo bloque 

catch

. Si hay bloque 

finally

, se ejecuta primero y luego el programa reanuda su ejecución después del 

bloque

finally

.

13.6

La forma 

catch(Exception

nombreExcepción

)

 atrapa cualquier tipo de excepción lanzada en un bloque 

try

.

Una ventaja es que ninguna excepción 

Exception

 lanzada puede escabullirse sin ser atrapada. El programador puede 

entonces decidir si manejará la excepción o si posiblemente vuelva a lanzarla.

13.7

Las excepciones 

Error

 son generalmente problemas graves con el sistema de Java subyacente; en la mayoría

de los programas no es conveniente atrapar excepciones 

Error

, ya que el programa no podrá recuperarse de dichos 

problemas.

13.8

Esto hace que la búsqueda de una coincidencia continúe en la siguiente instrucción 

try

 circundante. Si hay 

un bloque 

finally

, éste se ejecutará antes de que la excepción pase a la siguiente instrucción 

try

 circundante. Si 

no hay instrucciones 

try

 circundantes para las cuales haya bloques 

catch

 que coincidan, y la excepción es 

verifi cada,

se produce un error de compilación. Si no hay instrucciones 

try

 circundantes para las cuales haya bloques 

catch

que coincidan y la excepción es 

no verifi cada, se imprime un rastreo de la pila y el subproceso actual termina antes 

de tiempo. 

13.9

Se ejecuta el primer bloque 

catch

 que coincida después del bloque 

try

.

13.10 

Esto permite a un programa atrapar tipos relacionados de excepciones, y procesarlos en una manera uniforme. 

Sin embargo, a menudo es conveniente procesar los tipos de subclases en forma individual, para un manejo de excep-
ciones más preciso.

13.11 

La cláusula 

finally

 es el medio preferido para liberar recursos y evitar las fugas de éstos.

13.12 

Primero, el control pasa al bloque 

finally

, si existe uno. Después, la excepción se procesará mediante un bloque 

catch

 (si existe uno) asociado con un bloque 

try

 circundante (si existe uno).

13_MAQ_CAP_13_DEITEL.indd606

4/19/081:27:45AM