Вы находитесь на странице: 1из 5

Unidad 7.

Excepciones y Threads
Programacin orientada a objetos

7. Herencia y polimorfismo 1

En nuestros programas parecera no importante si el programa deja de funcionar, sera tan sencillo como
volver a ejecutarlo. Sin embargo, eso tiene varias consecuencias, entre ellas puede llevar a problemas ms
graves en un sistema, o frustracin del usuario.

Comencemos definiendo de forma bsica las excepciones y los threads y despus continuaremos ms a
fondo con cada uno de ellos.

Una excepcin es un problema que aparece durante la ejecucin de un programa. Una excepcin puede
ocurrir por varias razones, entre ellas [1]:
Un usuario ingres informacin invlida.
Un archivo que debe ser abierto no se encontr.
Una conexin con un servidor se perdi.
La JVM se qued sin memoria asignada.

Un thread es un camino de ejecucin del cdigo del programa. Es decir, el programa podra ejecutar
simultneamente el cdigo de una sentencia if y el cdigo de un ciclo for en un thread separado sin
necesidad de que alguno de los dos necesite que el otro termine su ejecucin para poder continuar.

Ya con estas definiciones bsicas 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 cdigo. Por ejemplo, tratar de enviar un mensaje
por WhatsApp pero la conexin a internet se perdi.

Runtime Exceptions: son excepciones que ocurren en tiempo de ejecucin y que probablemente
hubieran sido evitadas por el programador. Por ejemplo, tratar de acceder a un ndice mayor al del tamao
en un arreglo.

1
Documento elaborado por el Ing. Arturo Nereu Nez.

1
Unidad 7. Excepciones y Threads
Programacin 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 cdigo porque casi no se puede
hacer nada para repararlos. Un ejemplo sera que se termine la memoria asignada a un programa y el
sistema operativo termina la aplicacin.

Imagina que tienes un programa que se encarga de solicitar al usuario un nmero y ste regresar el nombre
del continente que est en esa posicin en el arreglo:

Aunque realmente no pedimos el valor al usuario, suponemos que se hace y que se guarda su seleccin en la
variable valorLeido, despus 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 cdigo compilar pero ser hasta
la ejecucin que se lance una excepcin:

El intentar acceder a la posicin 20 de un arreglo de tamao 5 arrojar una Excepcin de JAVA y terminar la

2
Unidad 7. Excepciones y Threads
Programacin orientada a objetos

ejecucin del programa.


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

En nuestro cdigo ahora incluimos las sentencias try-catch. La parte del try, debe contener en su bloque de
cdigo las posibles lneas que pueden lanzar una excepcin, 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 excepcin es lanzada, le indicamos al usuario que ingres mal el nmero y podramos
pedrselo de nuevo. Cabe mencionar que podemos indicar mltiples bloques catch.

Por ltimo, podemos completar con un finally (opcional) que se ejecutar siempre, no importando si se arroj
una excepcin o no:

3
Unidad 7. Excepciones y Threads
Programacin orientada a objetos

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

[2]

Como ejemplo, si estuviramos implementando un software para un cajero automtico bancario, podramos
lanzar una excepcin cuando el usuario quisiera retirar ms dinero del que tiene disponible:

Ahora, podramos lanzar una nueva excepcin en nuestro cdigo:

if(cantidadARetirar > cantidadDisponible)


{
throw new InsuficientFundsException(cantidadARetirar);
}

Cabe aclarar que al ser un objeto nuestra excepcin, tambin tiene su constructor y puede tener atributos y
mtodos. En nuestro caso, nuestra excepcin tiene la propiedad cantidad, que podra ser utilizada en el
cdigo que captura la excepcin que lanzamos.

4
Unidad 7. Excepciones y Threads
Programacin 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 definicin de los hilos en Java, ahora es tiempo de que veas el siguiente video donde se explica
cmo utilizarlos: https://www.youtube.com/watch?v=WoXHPhhOmzw

Referencias
[1] Excepciones JAVA: http://www.tutorialspoint.com/java/java_exceptions.htm
[2] Jerarqua 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 Informtica: http://geeks.ms/blogs/jmaguilar/archive/2008/11/30/20-desastres-famosos-
relacionados-con-el-software.aspx

Вам также может понравиться