Logo Studenta

Investigación - Manejo de excepciones

¡Estudia con miles de materiales!

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

Continuar navegando

Materiales relacionados

172 pag.
Lenguaje de Programación I JAVA

SIN SIGLA

User badge image

Stiven Fajardo

114 pag.
Curso Python - Manual

Continental

User badge image

Manuel Velázquez

108 pag.
5 pag.
EXAMEN DE POO 10 - Nat Alia

User badge image

Desafío Instagram