Excepciones

Unidad 7. Excepciones y Threads Programación orientada a objetos 7. Herencia y polimorfismo 1 En nuestros programas par

Views 226 Downloads 1 File size 600KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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

5