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

suponemos que se hace y que se guarda su selección en la variable valorLeido. Un ejemplo sería que se termine la memoria asignada a un programa y el sistema operativo termina la aplicación. Excepciones y Threads Programación orientada a objetos  Errores: estos errores no son excepciones como tal. Unidad 7. 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 . Los errores generalmente se ignoran en el código porque casi no se puede hacer nada para repararlos. sino problemas que salen y que no son culpa del programador ni del usuario. después simplemente imprimimos un mensaje en consola que diga el nombre del continente seleccionado. 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. En este caso imprimirá: Asia.

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

si estuviéramos implementando un software para un cajero automático bancario. 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. 4 . 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. nuestra excepción tiene la propiedad cantidad. podríamos lanzar una nueva excepción en nuestro código: if(cantidadARetirar > cantidadDisponible) { throw new InsuficientFundsException(cantidadARetirar). que podría ser utilizada en el código que captura la excepción que lanzamos. Excepciones y Threads Programación orientada a objetos Las excepciones que ya son parte de Java como la anterior. Unidad 7. En nuestro caso.

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