Está en la página 1de 5

Unidad 7.

Excepciones y Threads
Programación orientada a objetos

7. Herencia y polimorfismo 1

En nuestros programas parecería no importante si el programa deja de funcionar, sería tan sencillo como
volver a ejecutarlo. Sin embargo, eso tiene varias consecuencias, entre ellas puede llevar a problemas más
graves en un sistema, o frustración del usuario.

Comencemos definiendo de forma básica las excepciones y los threads y después continuaremos más a
fondo con cada uno de ellos.

Una excepción es un problema que aparece durante la ejecución de un programa. Una excepción puede
ocurrir por varias razones, entre ellas [1]:
● Un usuario ingresó información inválida.
● Un archivo que debe ser abierto no se encontró.
● Una conexión con un servidor se perdió.
● La JVM se quedó sin memoria asignada.

Un thread es un camino de ejecución del código del programa. Es decir, el programa podría ejecutar
simultáneamente el código de una sentencia if y el código de un ciclo for en un thread separado sin
necesidad de que alguno de los dos necesite que el otro termine su ejecución para poder continuar.

Ya con estas definiciones básicas en la mente, profundicemos en el tema.

Excepciones

Las excepciones podemos dividirlas en tres tipos dependiendo del impacto que tienen:

 Checked Exceptions: son excepciones que generalmente ocurren por errores del usuario o que el
programador no puede predecir al momento de escribir el código. Por ejemplo, tratar de enviar un mensaje
por WhatsApp pero la conexión a internet se perdió.

 Runtime Exceptions: son excepciones que ocurren en tiempo de ejecución y que probablemente
hubieran sido evitadas por el programador. Por ejemplo, tratar de acceder a un índice mayor al del tamaño
en un arreglo.

1
Documento elaborado por el Ing. Arturo Nereu Núñez.

1
Unidad 7. Excepciones y Threads
Programación orientada a objetos

 Errores: estos errores no son excepciones como tal, sino problemas que salen y que no son culpa del
programador ni del usuario. Los errores generalmente se ignoran en el código porque casi no se puede
hacer nada para repararlos. Un ejemplo sería que se termine la memoria asignada a un programa y el
sistema operativo termina la aplicación.

Imagina que tienes un programa que se encarga de solicitar al usuario un número y éste regresará el nombre
del continente que está en esa posición en el arreglo:

Aunque realmente no pedimos el valor al usuario, suponemos que se hace y que se guarda su selección en la
variable valorLeido, después simplemente imprimimos un mensaje en consola que diga el nombre del
continente seleccionado.

En este caso imprimirá: Asia. Pero y si el usuario elige un 20 por ejemplo, el código compilará pero será hasta
la ejecución que se lance una excepción:

El intentar acceder a la posición 20 de un arreglo de tamaño 5 arrojará una Excepción de JAVA y terminará la

2
Unidad 7. Excepciones y Threads
Programación orientada a objetos

ejecución del programa.


Para evitar eso, podemos atrapar las excepciones y hacer algo al respecto con la estructura: try, catch,
finally.

En nuestro código ahora incluimos las sentencias try-catch. La parte del try, debe contener en su bloque de
código las posibles líneas que pueden lanzar una excepción, en este caso sabemos que ahí se puede dar una
del tipo ArrayIndexOutOfBoundsException. En caso de ser lanzada y ser del tipo declarado en el catch, el
programa entrará en ese bloque (catch) y se ejecutará sin terminar.

En nuestro caso, si la excepción es lanzada, le indicamos al usuario que ingresó mal el número y podríamos
pedírselo de nuevo. Cabe mencionar que podemos indicar múltiples bloques catch.

Por último, podemos completar con un finally (opcional) que se ejecutará siempre, no importando si se arrojó
una excepción o no:

3
Unidad 7. Excepciones y Threads
Programación orientada a objetos

Las excepciones que ya son parte de Java como la anterior, forman parte de una jerarquía que podemos
extender (heredar) para implementar nuestras propias excepciones:

[2]

Como ejemplo, si estuviéramos implementando un software para un cajero automático bancario, podríamos
lanzar una excepción cuando el usuario quisiera retirar más dinero del que tiene disponible:

Ahora, podríamos lanzar una nueva excepción en nuestro código:

if(cantidadARetirar > cantidadDisponible)


{
throw new InsuficientFundsException(cantidadARetirar);
}

Cabe aclarar que al ser un objeto nuestra excepción, también tiene su constructor y puede tener atributos y
métodos. En nuestro caso, nuestra excepción tiene la propiedad cantidad, que podría ser utilizada en el
código que captura la excepción que lanzamos.

4
Unidad 7. Excepciones y Threads
Programación orientada a objetos

Para concluir el tema, visita el siguiente enlace para una lista de excepciones comunes y predefinidas:
http://proton.ucting.udg.mx/tutorial/java/Cap6/predef.html

Threads

Ya vimos la definición de los hilos en Java, ahora es tiempo de que veas el siguiente video donde se explica
cómo utilizarlos: https://www.youtube.com/watch?v=WoXHPhhOmzw

Referencias
[1] Excepciones JAVA: http://www.tutorialspoint.com/java/java_exceptions.htm
[2] Jerarquía Excepciones JAVA: http://beholia.blogspot.mx/2010/04/excepciones.html
Lista de Excepciones predefinidas en JAVA: http://proton.ucting.udg.mx/tutorial/java/Cap6/predef.html
Desastres Informática: http://geeks.ms/blogs/jmaguilar/archive/2008/11/30/20-desastres-famosos-
relacionados-con-el-software.aspx

También podría gustarte