Está en la página 1de 28

UNIDAD 4

EXCEPCIONES
OBJETIVO ESPECÍFICO
El alumno reconocerá la importancia del manejo de excepciones, y será
capaz de manejar las herramientas necesarias para poder llevar a cabo su
planteamiento e implementación.

92
INTRODUCCIÓN

Durante la implementación de una aplicación no se puede controlar todo,


en cualquier momento puede presentarse algún imprevisto: el servidor no
responde, el archivo no está en la ubicación esperada, entre otras fallas,
por lo que es conveniente contar con un código en el sistema que maneje
este tipo de situaciones y que no se encuentra en el funcionamiento
normal de la aplicación.

Durante la implementación de funcionalidades para un sistema, pocas


veces se consideran los posibles fallos o errores que pueden presentarse
durante su ejecución. Por eso se debe realizar un adecuado manejo de
excepciones que pueden presentarse en la aplicación.

Partiendo de esto, se pueden plantear algunas preguntas, por ejemplo:


¿Qué sucede con el código cuando se intenta dividir entre cero?, ¿qué
tipo de mensaje se muestra cuando no hay conexión disponible a la base
de datos?

93
LO QUE SÉ

Lee y analiza el siguiente escenario:

Se cuenta una aplicación que se conecta a una base de datos para


almacenar la información introducida por los usuarios. Sin embargo
cuando se presenta un fallo, los usuarios reciben mensajes de error por
parte del sistema que no entienden y comienzan a solicitar apoyo a la
mesa de ayuda (también conocido como soporte técnico o centro de
ayuda para los usuarios). ¿Qué se puede hacer para corregir o mejorar
esta situación?

Comparte tu respuesta en el foro de la unidad. Posteriormente lee las


aportaciones de tus compañeros, compara respuestas y comenta.

Pulsa el botón Colocar un nuevo tema de discusión aquí. Escribe en el


apartado Asunto el título de tu aportación, redacta tu comentario en el
área de texto y da clic en el botón Enviar al foro

94
TEMARIO DETALLADO
(10 horas)

4.1. Definición
4.2. Sintaxis de excepciones
4.3. Tipos de excepciones
4.4. Implementación

95
4.1. Definición
Durante el desarrollo de aplicaciones se puede implementar lo que se
conoce como manejo de excepciones o manejo de riesgos.

Una excepción se puede considerar como un error en la ejecución de una


aplicación; puede prever que el funcionamiento de una clase o un método
caiga en una situación que no se tenía prevista, o bien, cuando la
aplicación, en general, tiene algún fallo durante su ejecución.

En el lenguaje de programación Java, cuando un método falla durante su


ejecución, crea un objeto de tipo Exception, el cual permite dar
seguimiento a lo ocurrido mediante información adicional que contiene:
tipo de excepción ocurrida y estado de la excepción.

Cuando el método falla y se crea el objeto de tipo Exception, se procede a


buscar el manejador de esa excepción y ejecutarlo; en caso de no
encontrarse al manejador que resuelva la situación inesperada planteada
por la excepción, se detiene la ejecución de la aplicación.

De tal modo, si el sistema es crítico o maneja información sensible, es


altamente recomendable contar con el manejo adecuado de excepciones
que ayuden a evitar terminar abruptamente su ejecución.

A continuación un diagrama que muestra el flujo de una excepción (figura


4.1).

96
Figura 4.1. Flujo de una excepción

Veamos algunas ventajas que plantea el manejo adecuado de


excepciones:

 Se puede separar el código que maneja los errores del resto del
código de la aplicación, ya que se puede tener una clase que lleve
a cabo el manejo de situaciones poco usuales dentro de la
aplicación.
 Es posible agrupar los diferentes tipos de errores que pueden
presentarse y realizar una clara diferenciación entre ellos.
 Eficiencia en la búsqueda, dentro de la pila de llamadas a los
diferentes métodos, hasta encontrar el que maneja la situación

97
ocurrida, ya que sólo los métodos que tienen que ver con el manejo
del error son los que entran en acción.

Es importante notar que hay un tipo de situaciones que no se pueden


manejar y que provocan resultados inesperados o incoherentes. Estas
situaciones no son conocidas como excepciones, sino más bien como
errores en tiempo de ejecución1.

4.2. Sintaxis de excepciones


En el lenguaje de programación Java, las excepciones que se pueden
presentar durante la operación de un método son manejadas empleando
su propia sintaxis.

Para ello, se emplea un bloque de código, el que primero intenta (try)


realizar una determinada operación, y en caso de que no funcione o se
realice correctamente, proceda a atrapar (catch) el error cometido y que,
suceda o no un error, se realice finalmente (finally) otra operación.

A continuación se tiene la sintaxis de un bloque de código para el manejo


de excepciones en lenguaje de programación Java:

try {

1
Error en tiempo de ejecución. Es aquel error que se presenta cuando el programa se
está ejecutando, no es visible al programar ni al compilar el código fuente, si no hasta su
ejecución.

98
// Código posiblemente problemático

} catch( tipo_de_excepcion e) {

// Código para solucionar la excepción e

} catch( tipo_de_excepcion_mas_general e) {

// Código para solucionar la excepción e

} finally {

// Código que se ejecuta finalmente (independiente de try y

catch)

Es importante notar que en el código anterior se intenta controlar la


excepción con el primer catch, si éste no puede realizarlo, entonces se
procede a intentar con el segundo catch, y así sucesivamente, por ello es
importante tener en cuenta que los catch se tratan en el orden en el que
se han escrito.

99
A continuación se presenta un ejemplo para entender la importancia del
manejo de excepciones dentro de la implementación de una aplicación.
Para ello, se abre un archivo y se lee su contenido. Primero se plantea el
pseudocódigo, sin llevar a cabo el manejo de las posibles excepciones
que pueden presentarse durante su ejecución:

leerArchivo {

abrir el archivo;

determinar su tamaño;

asignar suficiente memoria;

leer el archivo a la memoria;

cerrar el archivo;

Posteriormente, se plantea el mismo pseudocódigo, pero considerando los


posibles errores que pueden llegar a presentarse:

codigodeError leerArchivo{

inicializar codigodeError = 0;

abrir el archivo;

if(archivoAbierto){

determinar la longitud del archivo;

if(obtenerLongitudDelArchivo){

asignar suficiente memoria;

if(obtenerSuficienteMemoria){

100
leer el archivo a memoria;

if(falloDeLectura){

codigodeError = −1;

else{

codigodeError = −2;

else{

codigodeError = −3;

cerrar el archivo;

if(archivoNoCerrado && codigodeError == 0){

codigodeError = −4;

else{

codigodeError = codigodeError and −4;

else{

codigodeError = −5;

101
}

return codigodeError;

El pseudocódigo anterior posee la desventaja de que es poco claro,


además se ve disminuida su sencillez y el manejo de los posibles errores,
por lo que se vuelve engorroso. A partir de esta observación, se puede
notar que hace falta una manera más sencilla de manejar los errores que
pueden presentarse en el funcionamiento de un programa, para lo cual se
plantea el manejo de excepciones.

4.3. Tipos de excepciones


En el lenguaje de programación Java, las excepciones también son
consideradas objetos, los cuales son denominados como instancias de
una clase.

Todas las excepciones definidas en el lenguaje Java heredan de la clase


Exception, la que a su vez hereda de la clase Throwable, y finalmente ésta
hereda de la superclase Object. De la misma forma, la clase Error también
hereda de la clase Throwable; esta clase da tratamiento a los errores que
no pueden preverse (errores en tiempo de ejecución). Las clases que
manejan los diferentes tipos de excepciones se encuentran clasificadas de
acuerdo con el siguiente diagrama (figura 4.2).

102
Figura 4.2. Tipos de excepciones

Existen excepciones que ya se encuentran definidas dentro del lenguaje


de programación Java, pero también se pueden implementar casos
particulares de acuerdo con el manejo de posibles fallos que se desee dar.

En el lenguaje de programación Java, existen dos grupos generales de


excepciones:

 Checked Exceptions o excepciones controladas. Permiten manejar


los errores que se pueden prever y por lo tanto continuar con la
ejecución de la aplicación sin interrumpirse abruptamente.
 Unchecked Exceptions o excepciones no controladas. Son aquellos
errores que no se pueden prever ni controlar y, por lo tanto, pueden
interrumpir la ejecución de la aplicación o incluso modificar los
datos. También son conocidas como errores en tiempo de
ejecución.

103
4.4. Implementación
Para llevar a cabo la implementación del tratamiento de excepciones, es
conveniente tener en cuenta la sintaxis planteada del tipo: try-catch-finally.

Continuando con el ejemplo de lectura de un archivo, la implementación


del mismo pseudocódigo, puede implementarse de la siguiente forma:

leerArchivo{

try{

abrir el archivo;

determinar su tamaño;

asignar suficiente memoria;

leer el archivo a la memoria;

cerrar el archivo;

catch(falloAbrirArchivo){

hacerAlgo;

catch(falloDeterminacionTamaño){

hacerAlgo;

catch(falloAsignaciondeMemoria){

hacerAlgo;

104
}

catch(falloLectura){

hacerAlgo;

catch(falloCerrarArchivo){

hacerAlgo;

Antes de ejecutar el bloque anterior de código, es conveniente verificar si


es necesario su uso, para ello se debe revisar el cumplimiento de alguna
condicional que permita su llamada a ejecución.

Para llamar al código que realizará el manejo de la excepción, se emplea


la palabra reservada throw, y en caso de llamar a múltiples secciones de
código que realicen el manejo de la excepción, se emplea la palabra
reservada throws. De esta manera, se tiene para la llamada a un solo
bloque de código:

if ( condicion_de_excepcion == true ) {

throw new miExcepcion();

105
Y, para el caso de la llamada a varios bloques de código que pueden
llevar a cabo el manejo de la excepción, se indica el tipo de dato devuelto
por el manejo de excepciones, y el método que manda a llamar a los
diferentes bloques de código que pueden manejar la excepción se le
conoce como método lanzador (el que lanza o inicializa la llamada a las
excepciones); por lo anterior se tiene:

tipo_devuelto miMetodoLanzador() throws miExcep1, miExcep2

// Código capaz de lanzar excepciones miExcep1 y miExcep2

El manejo de excepciones no es exclusivo del lenguaje de programación


Java, también puede llevarse a cabo en otros lenguajes de programación
orientados a objetos, como C++ o bien en C#.

La sintaxis en lenguaje C++ es similar y el bloque se compone por las


sentencias: try – throw- catch.

106
RESUMEN
Revisamos la manera de llevar a cabo el manejo de posibles errores en la
ejecución de una aplicación, así como las ventajas que representa contar
–en esos casos- con una salida adecuada para el usuario.

Es conveniente estar preparado para llevar a cabo el manejo de


excepciones, ya que permiten controlar errores que pueden preverse; en
muchas ocasiones es riesgoso mostrar salidas poco legibles para el
usuario (puede causar confusión o puede exponer información
confidencial o importante).

De la misma forma, es importante notar que hay situaciones que podrían


presentarse y que no pueden ser manejadas como una excepción. En este
caso nos estaremos refiriendo a los denominados errores en tiempo de
ejecución.

Hay que recordar que existe una jerarquía para la ejecución de los
bloques try-catch-finally, teniendo en cuenta que pueden presentarse
varios casos para la parte catch y se buscará -entre ellos- el que pueda
controlar esa situación.

Finalmente, no hay que olvidar que el manejo de excepciones permite


continuar con la ejecución de la aplicación en caso de presentarse y
mostrar mensajes de error entendibles a los usuarios.

107
GLOSARIO

Error en tiempo de ejecución


Es un evento que se presenta durante la ejecución de una aplicación y no
puede ser controlado.

Excepción
Evento que ocurre durante la ejecución de una aplicación y que interrumpe
el flujo normal de ella; este evento puede ser controlado.

Manejo de excepción
Código dentro de la aplicación que permite manejar los errores que
pueden presentarse durante la ejecución de la aplicación

108
ACTIVIDADES DE APRENDIZAJE

ACTIVIDAD 1
En el siguiente código fuente no se está llevando a cabo el manejo de
excepciones. El código realiza la división de 2 números proporcionados
por el usuario. Indica qué posibles fallos pueden presentarse y argumenta
al respecto.

public class ExcepcionApp {

public static void main(String[] args) {

String str1="12";

String str2="0";

String respuesta;

int numerador, denominador, cociente;

numerador=Integer.parseInt(str1);

denominador=Integer.parseInt(str2);

cociente=numerador/denominador;

respuesta=String.valueOf(cociente);

System.out.println(respuesta);

109
Guarda el archivo como excepcion.txt y colócalo en la plataforma. Para
ello, presiona el botón Examinar para localizar el archivo en tu
computadora y por último presiona Subir este archivo.

ACTIVIDAD 2

Partiendo de un sistema de inscripciones de alumnos, escribe los


mensajes que debería mostrar al momento de que un alumno se inscriba,
si se implementó el manejo de excepciones y mensajes de manera
adecuada.

Por ejemplo, si el alumno trata de inscribirse en una materia que no


corresponde a su semestre que el sistema muestre el mensaje “No
puedes inscribirte en la materia X porque nuestros registros indican que
eres del semestre Y”.

Toma en cuenta que los mensajes deben ser claros y el lenguaje debe ser
orientado a usuarios no especializados (alumnos en proceso de
inscripción a un nuevo semestre).

Realiza tu actividad en un procesador de textos, guárdala en tu


computadora y una vez concluida, presiona el botón Examinar. Localiza el
archivo, ya seleccionado, presiona Subir este archivo para guardarlo en
la plataforma.

110
ACTIVIDAD 3

Implementa, en lenguaje de programación Java, una clase que presente


posibles excepciones, así como sus mensajes de error para los usuarios
en el caso de conectividad a la base de datos. Por ejemplo: No se puede
ejecutar una consulta SQL.

Realiza tu actividad en un bloc de notas, guárdala en tu computadora y


una vez concluida, presiona el botón Examinar. Localiza el archivo, ya
seleccionado, presiona Subir este archivo para guardarlo en la
plataforma.

ACTIVIDAD 4

Investiga sobre la sintaxis del manejo de excepciones en otros lenguajes


de programación adicionales a Java. Plantea un ejemplo para uno de
ellos.

Realiza tu actividad en un bloc de notas, guárdala en tu computadora y


una vez concluida, presiona el botón Examinar. Localiza el archivo, ya
seleccionado, presiona Subir este archivo para guardarlo en la
plataforma.

111
CUESTIONARIO DE
REFORZAMIENTO

Responde las siguientes preguntas. Realiza tu actividad en un procesador


de textos, guárdala en tu computadora y una vez concluida, presiona el
botón Examinar. Localiza el archivo, ya seleccionado, presiona Subir
este archivo para guardarlo en la plataforma.

1. ¿Qué es una excepción?


2. ¿Para qué sirve el manejo de excepciones?
3. Proporciona un ejemplo de un fallo que no se pueda manejar como
una excepción.
4. Proporciona un ejemplo de un fallo que se pueda manejar como una
excepción.
5. Plantea tres situaciones en las que es conveniente llevar a cabo el
manejo de excepciones.
6. ¿Cuál es la diferencia entre una excepción y un error en tiempo de
ejecución?
7. ¿Cuál es la sintaxis, en lenguaje Java, para el manejo de
excepciones?
8. ¿Cuáles son las palabras reservadas para la llamada al código que
ejecuta el manejo de excepciones?

112
9. Indica los dos tipos generales de excepciones que existen en el
lenguaje de programación Java.
10. Proporciona un ejemplo en código de lenguaje Java en la cual se haga
el manejo de una excepción.

113
LO QUE APRENDÍ

Plantea el manejo de excepciones, en lenguaje de programación Java,


para la siguiente situación:

Se desea implementar una aplicación en la cual se realizan operaciones


con matrices (suma, resta, multiplicación y división). Por lo anterior, se
requiere la implementación de los métodos que hagan el manejo
adecuado de los posibles errores que pueden presentarse, por ejemplo:
división entre cero, matrices no compatibles para llevar a cabo la
operación, entre otros.

Realiza tu actividad empleando Java y genera un archivo de código fuente


excepciones.java, guárdalo en tu computadora. Posteriormente presiona el
botón Examinar, localiza el archivo, ya seleccionado, presiona Subir este
archivo para guardarlo en la plataforma.

114
EXAMEN DE AUTOEVALUACIÓN

Indica si las siguientes oraciones son verdaderas o falsas.

Verdadera Falsa
1. El manejo de excepciones impide que el programa ( ) ( )
falle.
2. Una excepción sólo muestra los errores en pantalla ( ) ( )
para depurar una aplicación.
3. Las excepciones sólo se pueden implementar en ( ) ( )
lenguaje de programación Java.
4. Para llevar a cabo el manejo de excepciones, es ( ) ( )
necesario conocer los posibles fallos que pueden
presentarse.
5. No todas las aplicaciones requieren llevar a cabo el ( ) ( )
manejo de excepciones.
6. Es necesario programar toda una clase para llevar ( ) ( )
a cabo el manejo de excepciones.
7. Un método no puede incluir manejo de ( ) ( )
excepciones.
8. Al realizar el manejo de excepciones sólo hay que ( ) ( )
tomar en cuenta código programado por otras
personas.
9. El manejo de excepciones no debe proporcionar ( ) ( )
información del sistema a los usuarios.

115
10. La sintaxis para el tratamiento de una excepción ( ) ( )
en el lenguaje de programación Java consiste en la
forma try - catch – finally.

116
MESOGRAFÍA

Bibliografía sugerida

Autor Capítulo Páginas


Sierra & Bates (2005) 11 315-352

Bibliografía Básica

Sierra, Kathy & Bates, Bert. (2005). Head First Java. (2nd ed.) O’Reilly:
Sebastopol, CA. [Vista previa]

Bibliografía Complementaria

Eckel, Bruce. (2006). Thinking in Java. (4th ed.) Prentice Hall: Nueva York,
NY. [Vista previa]

117
Sitios de Internet

Sitio Descripción
http://prograweb.com.mx/poo/07Exce Tratamiento de excepciones con
pciones.html Java
http://chuwiki.chuidiang.org/index.ph Excepciones en Java
p?title=Excepciones_en_Java#Heren
cia_de_Excepciones
http://docs.oracle.com/javase/6/docs/ Documentación para excepciones
api/java/lang/Exception.html de Java
http://es.debugmodeon.com/articulo/ Manejo de excepciones en Java
manejo-de-excepciones-y-errores-en-
una-arquitectura-java
http://www.tecn.upf.es/~bouayad/pro Manejo de excepciones
g/material/teoria/streams/exceptions.
pdf
http://www.mitecnologico.com/Main/ Programación orientada a objetos
ExcepcionesDefinicion con Java

118

También podría gustarte