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. Los errores generalmente se ignoran en el código porque casi no se puede hacer nada para repararlos. 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. sino problemas que salen y que no son culpa del programador ni del usuario. En este caso imprimirá: Asia. 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 . Excepciones y Threads Programación orientada a objetos  Errores: estos errores no son excepciones como tal. Un ejemplo sería que se termine la memoria asignada a un programa y el sistema operativo termina la aplicación. 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. Pero y si el usuario elige un 20 por ejemplo.

Cabe mencionar que podemos indicar múltiples bloques catch. el programa entrará en ese bloque (catch) y se ejecutará sin terminar. podemos atrapar las excepciones y hacer algo al respecto con la estructura: try. podemos completar con un finally (opcional) que se ejecutará siempre. Por último. en este caso sabemos que ahí se puede dar una del tipo ArrayIndexOutOfBoundsException. En nuestro caso. finally. le indicamos al usuario que ingresó mal el número y podríamos pedírselo de nuevo. En nuestro código ahora incluimos las sentencias try-catch. debe contener en su bloque de código las posibles líneas que pueden lanzar una excepción. catch. Para evitar eso. si la excepción es lanzada. La parte del try. Excepciones y Threads Programación orientada a objetos ejecución del programa. Unidad 7. En caso de ser lanzada y ser del tipo declarado en el catch. no importando si se arrojó una excepción o no: 3 .

forman parte de una jerarquía que podemos extender (heredar) para implementar nuestras propias excepciones: [2] Como ejemplo. } Cabe aclarar que al ser un objeto nuestra excepción. Unidad 7. que podría ser utilizada en el código que captura la excepción que lanzamos. nuestra excepción tiene la propiedad cantidad. 4 . Excepciones y Threads Programación orientada a objetos Las excepciones que ya son parte de Java como la anterior. también tiene su constructor y puede tener atributos y métodos. podríamos lanzar una excepción cuando el usuario quisiera retirar más dinero del que tiene disponible: Ahora. En nuestro caso. si estuviéramos implementando un software para un cajero automático bancario. podríamos lanzar una nueva excepción en nuestro código: if(cantidadARetirar > cantidadDisponible) { throw new InsuficientFundsException(cantidadARetirar).

ms/blogs/jmaguilar/archive/2008/11/30/20-desastres-famosos- relacionados-con-el-software.com/watch?v=WoXHPhhOmzw Referencias [1] Excepciones JAVA: http://www.ucting.aspx 5 .mx/tutorial/java/Cap6/predef.mx/tutorial/java/Cap6/predef.html Lista de Excepciones predefinidas en JAVA: http://proton.mx/2010/04/excepciones.htm [2] Jerarquía Excepciones JAVA: http://beholia. Unidad 7.blogspot. Excepciones y Threads Programación orientada a objetos Para concluir el tema.ucting.html Threads Ya vimos la definición de los hilos en Java.udg.tutorialspoint. visita el siguiente enlace para una lista de excepciones comunes y predefinidas: http://proton.com/java/java_exceptions.html Desastres Informática: http://geeks.udg.youtube. ahora es tiempo de que veas el siguiente video donde se explica cómo utilizarlos: https://www.