Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Principios de construcción de software Ramón Gómez Romero P13 Manejo de Excepciones Daniela Morales Sixto 07 de mayo de 2023 1. ¿Qué diferencia hay entre error y excepción? Un error es una condición que puede considerarse irrecuperable, como que el programa requiera una cantidad de memoria mayor que la disponible. Estos errores no pueden ser manejados en tiempo de ejecución. Si ocurre un error, el programa terminará. En Java, los errores heredan de la clase Throwable. Los errores por lo general representan problemas graves que el programador (o la aplicación) no deben intentar detectar. Los errores son simplemente condiciones anormales, que nunca se espera que ocurran en circunstancias normales y, por lo tanto, nunca se prevén. Una excepción es un evento, que puede perturbar el flujo normal del programa. Lanzar una excepción es el proceso de crear un objeto de excepción y entregarlo al sistema de tiempo de ejecución. El objeto de excepción se crea mediante el método en el que se produjo la excepción. El objeto de excepción contiene información útil, como el tipo y la descripción de la excepción. Cuando el sistema de tiempo de ejecución recibe el objeto de excepción, intentará encontrar a alguien que lo maneje dentro de la pila de llamadas atravesándolo en el orden inverso (en el que se llamaron los métodos). El sistema de ejecución es exitoso si encuentra un método con un controlador de excepciones. El controlador de excepciones es un bloque de código que puede manejar oficialmente dicha excepción. Si el sistema de tiempo de ejecución encuentra un controlador adecuado (es decir, el tipo de excepción coincide con el tipo que se puede manejar), pasará el objeto de excepción al controlador. Esto se llama atrapar la excepción. Sin embargo, si la excepción no puede ser manejada, el programa terminará. Por lo tanto, una excepción es manejable y de cierta manera predecible, en cambio el error es irrecuperable y no pueden ser manejados en tiempo de ejecución. 2. ¿A qué se refiere el término “propagación de excepciones”? Cuando primero se lanza una excepción desde la parte superior de la pila y, si no se detecta, baja la pila de llamadas al método anterior. Después de que un método lanza una excepción, el sistema de tiempo de ejecución intenta encontrar algo para manejarlo. El conjunto de posibles «algo» para manejar la excepción es la lista ordenada de métodos que se llamaron para llegar al método donde ocurrió el error. La lista de métodos se conoce como pila de llamadas y el método de búsqueda es Propagación de excepciones. Cuando ocurre una excepción, la propagación es un proceso en el que la excepción se coloca desde la parte superior hasta la parte inferior de la pila. Si no se detecta una vez, la excepción vuelve a descender al método anterior y así sucesivamente hasta que se detecta o hasta que llega al final de la pila de llamadas. Esto se llama propagación de excepciones y esto sucede en el caso de Excepciones no verificadas. 3. ¿A qué se refiere el término “encadenamiento de excepciones”? El encadenamiento de excepciones consiste en atrapar una excepción y lanzar una nueva excepción utilizando la excepción atrapada como causa de la nueva excepción. Esta es una técnica muy utilizada en el desarrollo de librerías para encapsular diversas excepciones en excepciones creadas en una jerarquía propia de la librería. 4. Describe la causa por la que cada una de las siguientes excepciones puede presentarse y muestra un pequeño bloque de código de ejemplo: 4.1. IllegalArgumentException IllegalArgumentException es una subclase de java.lang.RuntimeException. RuntimeException, como su nombre indica, se produce cuando el programa se está ejecutando. Por lo tanto, no se comprueba en tiempo de compilación. Su causa puede ser cuando se pasa un método de argumentos ilegales o inadecuados, se produce una excepción IllegalArgumentException. En el ejemplo anterior cuando se ingresa un número menor y mayor a 100 hay una excepción de tipo IllegalArgumentException 4.2. IlegalStateException IllegalStateException es la subclase de la clase RuntimeException y, por lo tanto, es una excepción sin comprueba. Es planteado por el programador o por el desarrollador de la API explícitamente. Se produce cuando un método llamado ilegal o un método se llama en un momento incorrecto. La excepción puede surgir en el código generalmente cuando estamos trabajando con el marco de Colecciones. La lista, la cola, los mapas, el árbol son algunas de las colecciones. De estos, la lista y las colas tienden a arrojar la excepción estatal ilegal a las condiciones específicas. En el ejemplo anterior si llamamos dos veces el método star después de iniciado el proceso se presenta una excepción de tipo IllegalStateException 4.3. NullPointerException Es un tipo de excepción de tiempo de ejecución en Java que se produce cuando se intenta realizar una operación en una referencia nula. En otras palabras, está intentando acceder o llamar a un método en un objeto que no existe. En el ejemplo anterior para evitar una excepción NullPointerException, siempre debe asegurarse de que la referencia que está utilizando no es nula antes de realizar cualquier operación en ella. 4.4. IndexOutOfBoundsException Lanzado para indicar que un índice de algún tipo (como a una matriz, a un string, o a un vector) está fuera del rango. En el ejemplo anterior primero se valida el rango del índice para evitar una excepción de tipo IndexOutOfBoundsException 4.5. UnsupportedOperationException Es una de las excepciones comunes que se producen cuando trabajamos con alguna API de implementación de lista. Se produce para indicar que la operación solicitada no es compatible. Esta clase es miembro de Java Collections Framework. En el ejemplo anterior si hubiéramos utilizado un List en vez de un ArrayList y quisiéramos insertar un nuevo elemento obtendríamos una excepción de tipo UnsupportedOperationException 4.6. Excepcion Al ejecutar código Java, pueden ocurrir diferentes errores: errores de codificación cometidos por el programador, errores debidos a una entrada incorrecta, u otras cosas imprevisibles. Cuando se produce un error, Java normalmente se detendrá y generará un mensaje de error. El término técnico para esto es: Java lanzará una excepción (arrojará un error). En el ejemplo anterior se quiere imprimir el elemento en el índice 10 pero mandara una excepción debido a que no existe. 4.7. ArithmeticException Lanzado cuando se ha producido una condición aritmética excepcional. Para Por ejemplo, un entero "divide por cero" arroja un instancia de esta clase. Los objetos pueden ser construidos por el máquina virtual como si la supresión estuviera deshabilitada y/o el El seguimiento de la pila no se podía escribir. https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html#Throwable(java.lang.String,%20java.lang.Throwable,%20boolean,%20boolean) https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html#Throwable(java.lang.String,%20java.lang.Throwable,%20boolean,%20boolean) En el ejemplo anterior para evitar una excepción de tipo ArithmeticException se comprueba primero que b sea diferente de 0 para poder hacer la división 4.8. RuntimeException son aquellas excepciones que se comprueban en tiempo de ejecución. RuntimeException es la superclase de todas aquellas excepciones que se pueden lanzar durante la ejecución normal del programa Java. Estas también se denominan excepciones no marcadas. se producen normalmente debido a que la entrada se proporciona defectuosa y provocan excepciones como ArrayIndexOutOfBoundsException, IllegalArgumentException, NumberFormatException o NullPointerException. En este ejemplo, comprobamos sila referencia es nula antes de invocar el método en ella. Si es null, imprimimos un mensaje que indica que la referencia de cadena es null Referencias ArithmeticException (Java Platform SE 7 ). (2020, 24 junio). https://docs.oracle.com/javase/7/docs/api/java/lang/ArithmeticException.html Diferencia entre excepción y error / Programación. (s. f.). La diferencia entre objetos y términos similares. https://es.differkinome.com/articles/programming/difference- between-exception-and- error.html#:~:text=Tanto%20los%20errores%20como%20las%20excepciones%20s on%20eventos,desmarcadas.%20Pero%20los%20errores%20siempre%20est%C3% A1n%20sin%20marcar. GeeksforGeeks. (2021). How to Solve Java List UnsupportedOperationException. GeeksforGeeks. https://www.geeksforgeeks.org/how-to-solve-java-list- unsupportedoperationexception/ Greyrat, R. (2022, 5 julio). Propagación de excepciones en Java – Barcelona Geeks. https://barcelonageeks.com/propagacion-de-excepciones-en-java/ How to resolve IllegalStateException in Java - Javatpoint. (s. f.). www.javatpoint.com. https://www.javatpoint.com/how-to-resolve-illegalstateexception-in-java How to solve an IllegalArgumentException in Java. (s. f.). https://www.tutorialspoint.com/how-to-solve-an-illegalargumentexception-in-java# IndexOutOfBoundsException (Java Platform SE 7 ). (2020, 24 junio). https://docs.oracle.com/javase/7/docs/api/java/lang/IndexOutOfBoundsException.ht ml Java Exceptions (Try. . .Catch). (s. f.). https://www.w3schools.com/java/java_try_catch.asp
Compartir