java exceptions exception handling with examples
Este tutorial de vídeo sobre las excepciones de Java explica todo sobre el manejo de excepciones en Java. Aprenderá sobre jerarquía de excepciones, tipos, métodos de clase y más:
Cuando estamos ejecutando programas Java, el comportamiento normal o el flujo normal del programa se interrumpe, debido a algunos eventos inesperados.
Por ejemplo, abrimos un archivo para leer los datos. Cuando se ejecuta la llamada Abrir archivo, encontramos que falta el archivo que estamos intentando abrir. Esto resulta en la interrupción del flujo normal del programa.
Este evento que afecta o interrumpe el flujo normal del programa se denomina ' Excepción ”.
=> Visite aquí para explorar la serie de formación Java para todos.
Aquí hay un video tutorial sobre el manejo de excepciones de Java:
Lo que vas a aprender:
abrir la tabla hash de direccionamiento c ++
Manejo de excepciones en Java
Cuando ocurre una excepción en el programa, la ejecución del programa finaliza. Como se trata de una terminación abrupta, el sistema genera un mensaje y lo muestra. El mensaje generado por el sistema puede ser críptico como algunos códigos o ilegible.
Así, el usuario normal debería entender por qué el programa detuvo su ejecución abruptamente, debería saber el motivo. Los mensajes generados por el sistema como resultado de una excepción pueden no ser útiles. En Java, podemos manejar la excepción y proporcionar mensajes significativos al usuario sobre el problema.
Este manejo de excepciones, comúnmente conocido como 'Manejo de excepciones' es una de las características más destacadas de la programación Java.
Razones para que ocurra la excepción
Podemos tener varias razones por las cuales pueden ocurrir excepciones. Si es una excepción relacionada con la entrada, entonces la razón puede ser que los datos de entrada sean incorrectos o ilegibles.
Si obtenemos una excepción para la E / S de archivos, es muy posible que los archivos con los que estamos tratando no existan. En algún otro momento, puede haber errores como problemas de red, impresora no disponible o funcionando, etc.
En un programa, además de las excepciones, también obtenemos errores. Por lo tanto, para manejar las excepciones de manera efectiva, debemos ser conscientes de las diferencias entre error y excepción.
Un error indica un problema más serio con la aplicación y la aplicación no debería intentar detectarlo. Por el contrario, la excepción es una condición que cualquier aplicación razonable intentará atrapar.
Por lo tanto, un error en la aplicación es más grave y las aplicaciones se bloquean cuando encuentran un error. Por otro lado, las excepciones ocurren en el código y el programador puede manejarlas proporcionando acciones correctivas.
¿Qué es el manejo de excepciones?
El manejo de excepciones en Java es un mecanismo mediante el cual se mantiene el flujo normal de la aplicación. Para hacer esto, empleamos un poderoso mecanismo para manejar errores o excepciones en tiempo de ejecución en un programa.
Una secuencia de código que se utiliza para manejar la excepción se denomina 'controlador de excepciones'. Un manejador de excepciones interroga el contexto en el momento en que ocurrió la excepción. Esto significa que lee los valores de las variables que estaban dentro del alcance mientras ocurrió la excepción y luego restaura el programa Java para continuar con el flujo normal.
Beneficios del manejo de excepciones
El principal beneficio del manejo de excepciones es que mantiene el flujo normal de la aplicación a pesar de que se produzca una excepción. Cuando ocurre una excepción, el programa generalmente termina abruptamente.
Tener un manejador de excepciones en un programa no hará que el programa finalice abruptamente. En cambio, un controlador de excepciones se asegura de que todas las declaraciones del programa se ejecuten normalmente y que el flujo del programa no se interrumpa de forma abrupta.
Jerarquía de excepciones en Java
El siguiente diagrama muestra la jerarquía de excepciones en Java. La clase java.lang.Throwable (descendiente de la clase Object) es la clase raíz de Java Exception. Las clases Exception y Error se derivan de esta clase.
La clase de excepción es la clase base para todas las demás excepciones.
A continuación se muestra una jerarquía de la clase de excepción en Java que enumerará todas las principales excepciones que un programador de Java debe conocer.
Clase de excepción en Java
Como se ve en el diagrama de jerarquía, la clase Throwable tiene dos subclases directas, es decir, Excepción y Error. Las excepciones que surgen de una fuente externa se describen en la clase Exception.
La clase Exception declara que los constructores son iguales a la clase Throwable y la invocación de cada constructor también invoca su contraparte Throwable. La clase de excepción no declara sus métodos, hereda los métodos de la clase Throwable.
Los constructores y métodos que utiliza la clase Exception se presentan a continuación.
Constructores
Constructor Descripción excepción pública () Un constructor predeterminado que construye una nueva excepción con el mensaje como nulo. Excepción pública (mensaje de cadena) Constructor para construir una nueva excepción con el mensaje dado. En este caso, la causa no se inicializa y se puede usar una llamada posterior a Throwable.initCause (java.lang.Throwable) para inicializar la causa. Excepción pública (mensaje de cadena, causa descartable) Construye una nueva excepción utilizando un mensaje y una causa determinados. Excepción pública (causa descartable) Construye una nueva excepción con la causa dada y un mensaje dado por (cause == null? Null: cause.toString ()) (que normalmente contiene la clase y el mensaje de detalle de la causa). Excepción protegida (Mensaje de cadena, Causa arrojable, enableSuppression booleano, StackTrace de escritura booleano) Construye una nueva excepción con el mensaje, la causa, la supresión (habilitada o deshabilitada) y el seguimiento de la pila de escritura (habilitado o deshabilitado).
Métodos
Prototipo de método | Descripción |
---|---|
public String getMessage () | Reciba un mensaje detallado sobre la excepción que ocurrió. |
public Throwable getCause () | Obtenga la causa de la excepción representada por un objeto arrojable |
cadena pública toString () | Concatena el nombre de la clase con el resultado de getMessage () y devuelve la cadena resultante. |
public void printStackTrace () | Imprime el resultado de toString () y el contenido del seguimiento de la pila en el flujo de salida del error, System.err. |
public StackTraceElement () getStackTrace () | Obtenga cada elemento del seguimiento de la pila en forma de matriz. |
public Throwable fillInStackTrace () | Complete el seguimiento de la pila con el seguimiento de la pila actual. |
Ejemplo de excepción
A continuación, presentamos un programa Java para demostrar un ejemplo básico de excepción. Aquí proporcionamos una variable de cadena inicializada a un valor nulo. Cuando intentamos imprimir esta variable, se lanza una excepción ya que el valor de String no puede ser nulo.
|_+_|Producción
Tipos de excepciones en Java
Java admite tres tipos de excepciones:
- Excepción marcada
- Excepción sin marcar
- Error
En esta sección, discutiremos los tres tipos anteriores.
# 1) Excepción marcada
Algunas excepciones se comprueban en el momento de la compilación cuando se compila el código. Estas son 'excepciones marcadas'. El programa Java arroja un error de compilación cuando encuentra que el código dentro de un programa es propenso a errores.
Podemos encargarnos de los errores de compilación lanzados por la excepción marcada manejando las excepciones encerrando el código en un bloque try-catch o usando la palabra clave throws.
En la jerarquía de excepciones, la clase que hereda directamente la clase Throwable como IOException, ClassNotFoundException, etc.son todas las excepciones marcadas, excepto las clases RuntimeException y Error. Estas son excepciones no marcadas.
El siguiente programa Java demuestra las excepciones comprobadas, FileNotFoundException e IOException. En este programa, intentamos abrir un archivo que no existe y leerlo.
Como el archivo no existe, el método de archivo abierto arroja FileNotFoundException. A continuación, cuando intentamos leer el contenido del archivo y cerrar el archivo, las llamadas a los métodos arrojan IOException.
|_+_|Producción
En la salida anterior, como el controlador de excepciones está ausente, obtenemos errores de compilación para las excepciones comprobadas.
Ahora proporcionemos una cláusula throws para este programa. Como el padre de FileNotFoundException es IOException, solo especificaremos la IOException después de la cláusula throws.
|_+_|Producción
Como se ve en el resultado, cuando manejamos la excepción, proporciona un resultado más significativo en lugar de los errores de compilación.
# 2) Excepción sin marcar
Las excepciones sin marcar son las excepciones que se comprueban en tiempo de ejecución. Por tanto, a pesar de las excepciones, una compilación de programas tendrá éxito. La mayoría de las excepciones no comprobadas se producen debido a los datos incorrectos utilizados en el programa.
Las clases que heredan 'RuntimeException' son excepciones sin marcar. Excepciones como ArrayIndexOutofBounds Exception, ArithmeticException, NullPOinterException, etc.son ejemplos de excepciones no comprobadas.
El siguiente programa muestra una excepción no comprobada en tiempo de ejecución que se produce al dividir un número por cero.
|_+_|Producción
Vemos que el programa se compila correctamente y luego se lanza ArithmeticException en tiempo de ejecución.
Ejemplos de excepción no marcada:
- ArrayIndexOutOfBoundsException
- Excepción de puntero nulo
- Argumento de excepción ilegal
- NumberFormatException
Aparte de las dos excepciones anteriores, hay algunas excepciones más marcadas que incluyen:
- SQLException
- InvocationTargetExecption
#3) Error
El error suele ser una situación irreversible e irrecuperable en un programa y cuando se produce un error, los programas se bloquean. Algunos de los ejemplos de errores en un programa son OutOfMemoryError, AssertionError y VirtualMachineError, etc.
La clase Error hereda de la clase Throwable. Error describe una situación que no se puede manejar y da como resultado que un programa se bloquee.
Analicemos el error OutOfMemory en esta sección como ejemplo de error.
Sabemos que todos los objetos en Java se asignan mediante el operador new y se almacenan en el montón. Cuando el montón se queda sin memoria, la máquina virtual Java (JVM) no puede asignar el objeto. Al mismo tiempo, el recolector de basura no puede liberar memoria. Esta situación da lugar al error OutOfMemory.
El OutOfMemoryError en Java se verá como se muestra a continuación:
|_+_|La presencia de OutOfMemoryError en un programa significa que se están procesando demasiados datos o que los objetos se mantienen durante demasiado tiempo. A veces, también puede ser una biblioteca de terceros que consume memoria.
Causas de OutOfMemoryError
# 1) Espacio dinámico de Java
Si una aplicación tiene demasiados finalizadores, el recolector de basura no recupera inmediatamente los objetos de clase que tienen el método Finalize, sino que se ponen en cola para su finalización en un momento posterior. A veces, la finalización no puede seguir el ritmo del tiempo y la memoria del montón se llena, lo que genera OutOfMemoryError.
Otro motivo de OutOfMemoryError es que el tamaño de pila especificado puede ser insuficiente para la aplicación.
El siguiente código demuestra el OutOfMemoryError que puede ocurrir debido a un gran tamaño de datos declarado para una matriz.
|_+_|Producción
# 2) Espacio Permgen
El área de generación permanente en la memoria también se puede agotar y podría generar un error OutOfMemory.
El tamaño de la región PermGen se establece durante el lanzamiento de la JVM. Si el usuario no establece el tamaño, se utiliza el tamaño predeterminado específico de la plataforma.
Aunque las dos anteriores suelen ser las causas principales de la aparición de OutOfMemoryError, puede haber otras causas, como que el tamaño de la matriz supere el límite de VM, etc.
Lista de excepciones en Java
A continuación se muestra una lista de las principales excepciones que ocurren en Java. Hemos proporcionado ejemplos de programación para algunas de estas excepciones. Tenga en cuenta que estas son excepciones integradas compatibles con Java.
# 1) ArithmeticException: Las anomalías aritméticas como dividir por cero dan como resultado ArithmeticException.
El siguiente programa demuestra la aparición de ArithmeticException.
|_+_|Producción
# 2) ArrayIndexOutOfBoundsException: ArrayIndexOutOfBoundsException se lanza cuando se accede a un elemento de matriz utilizando un índice ilegal. El índice utilizado supera el tamaño de la matriz o es negativo.
# 3) ClassNotFoundException: Si no se encuentra la definición de clase, se genera la ClassNotFoundException.
# 4) FileNotFoundException: FileNotFoundException se da cuando el archivo no existe o no se abre.
# 5) IOException: IOException se lanza cuando la operación de entrada-salida falla o se interrumpe.
# 6) InterruptedException: Siempre que un hilo está procesando, durmiendo o esperando, se interrumpe lanzando InterruptedException.
# 7) NoSuchFieldException: Si una clase no contiene un campo o variable especificados, arroja NoSuchFieldException.
# 8) NoSuchMethodException: Cuando no se encuentra el método al que se accede, se genera NoSuchMethodException.
# 9) NullPointerException: NullPointerException se genera cuando se hace referencia a un objeto nulo. Ésta es la excepción más importante y más común en Java.
# 10) NumberFormatException: Esta excepción se genera cuando un método no pudo convertir una cadena en un formato numérico.
# 11) RuntimeException: Cualquier excepción que se produzca en tiempo de ejecución es una RuntimeException.
# 12) StringIndexOutOfBoundsException: StringIndexOutOfBoundsException es lanzada por la clase String e indica que el índice supera el tamaño del objeto String o es negativo.
# 13) EOFException: EOFException es parte del paquete java.io y se lanza cuando se llega al final del archivo y se está leyendo.
# 14) IllegalArgumentException: Se lanza IllegalArgumentException cuando se pasan argumentos ilegales o inválidos al método. Por ejemplo, el formato de datos incorrecto, valor nulo cuando se requiere un valor no nulo o argumentos fuera de rango.
El siguiente programa de Java demuestra la IllegalArgumentException.
|_+_|Producción
En el programa anterior, la IllegalArgumentException se lanza en la segunda llamada a la función setMarks donde ingresamos las marcas que están fuera de rango (> 45).
# 15) InputMismatchException: InputMismatchException se lanza cuando la lectura de entrada no coincide con un patrón especificado. Por ejemplo, si el programa espera un entero y lee un flotante, entonces se genera la excepción InputMismatchException.
# 16) NoSuchElementException: NoSuchElementException se lanza cuando el siguiente elemento al que se accede no existe.
Por ejemplo, en Enumeration, el método nextElement () se usa para acceder al siguiente elemento de la enumeración. Si el elemento no existe, se lanza NoSuchElementException. La mayoría de las colecciones de Java lanzan esta excepción.
El programa que se proporciona a continuación lo demuestra.
|_+_|Producción
#17) ConcurrentModificationException: ConcurrentModificationException generalmente es lanzada por clases Collection. Esta excepción se produce cuando los objetos intentan modificar un recurso al mismo tiempo.
Por ejemplo, un hilo no puede modificar una colección cuando otro hilo está accediendo a ella. Si permitimos dos subprocesos, esos dos accederán simultáneamente a la colección y habrá inconsistencias.
El siguiente ejemplo demuestra la ConcurrentModificationException.
|_+_|Producción
En el programa anterior, mientras se imprime ArrayList, intentamos eliminar un elemento al mismo tiempo. Este es el acceso concurrente y, por lo tanto, se lanza una excepción.
Excepciones personalizadas en Java
Hasta ahora hemos discutido todas las excepciones que están integradas o proporcionadas por el lenguaje Java. Aparte de estas excepciones, también podemos definir nuestras propias excepciones. Se denominan excepciones personalizadas o excepciones definidas por el usuario.
Usando excepciones personalizadas, podemos definir nuestras excepciones según nuestras necesidades.
El siguiente ejemplo muestra la excepción personalizada que definimos para un valor entero.
|_+_|Producción
Preguntas frecuentes
P # 1) ¿Qué quiere decir con excepción?
Responder: Un evento que ocurre durante la ejecución de un programa e interrumpe el flujo de ejecución normal del programa se llama Excepción. La excepción no es deseada e inesperada y puede ocurrir debido a factores externos o errores de programación.
P # 2) ¿Cuál es la diferencia entre error y excepción?
Responder: Las excepciones son eventos que interrumpen el flujo normal del programa. Podemos manejar excepciones en nuestro programa y continuar con el programa normalmente. Un error es un evento irrecuperable que no se puede manejar y finaliza el programa.
P # 3) ¿Qué quiere decir con manejo de excepciones?
Responder: El proceso de especificar la secuencia de pasos en un programa para manejar la excepción se llama Manejo de excepciones. Al proporcionar controladores de excepciones en un programa, podemos garantizar el flujo normal del programa.
P # 4) ¿Cuáles son las ventajas del manejo de excepciones en Java?
Responder: Mediante el manejo de excepciones podemos mantener el flujo normal de ejecución de una aplicación. También podemos propagar los errores por la pila de llamadas cuando proporcionamos controladores de excepciones.
Q #5) ¿Cuál es el uso del manejo de excepciones?
Responder: No terminar el flujo normal de ejecución de una aplicación es el uso principal de tener manejadores de excepciones en un programa. Sin controladores de excepciones, el programa terminará y el flujo de ejecución normal se interrumpirá cuando ocurra una excepción.
Con excepción que se maneja adecuadamente en el programa, puede continuar con su ejecución normal incluso cuando ocurre una excepción.
Más ejemplos sobre excepciones
Una excepción es un evento que ocurre mientras el programa está en ejecución e interrumpe la ejecución del programa. Debido a lo cual el producto de software terminará abruptamente.
Cuando ocurre esta excepción, Java crea un objeto con un mensaje de error e información sobre la clase. Este es el objeto de excepción.
¿Por qué necesitamos una excepción en Java?
Clase ExcepDemo sin excepción:
|_+_|
PRODUCCIÓN:
Clase ExcepDemo con manejo de excepciones:
|_+_|
PRODUCCIÓN:
Prueba, atrapa y finalmente bloquea:
- Una excepción se maneja mediante try, catch block.
- Las declaraciones que pueden dar lugar a excepciones se escriben dentro del bloque try.
- Cuando ocurre una excepción, se ejecutarán las declaraciones dentro del bloque catch. Si no ocurre una excepción, el bloque catch no se ejecutará.
- Independientemente de la excepción ocurrida o no, se ejecutará el bloque final.
Tipos de excepciones
Excepción sin marcar:
Como las excepciones no comprobadas pueden evitarse mediante la programación adecuada ( P.ej. Excepción de puntero nulo, excepción aritmética) no habrá verificado por el compilador. Se lanzará una excepción sin marcar en tiempo de ejecución.
Excepción marcada:
- El compilador comprobará la excepción marcada y es obligatorio lanzar o gestionar la excepción.
- Esta excepción se utiliza para separar el código de manejo de errores del código normal.
- Todas las excepciones marcadas están agrupadas y es útil para diferenciar los problemas.
Ejemplo: java.io
|_+_|
Errores
Puede ocurrir un error debido a errores lógicos del programa o cualquier memoria relacionada con un problema de JVM.
Ejemplo: Error de memoria sin límite o error de desbordamiento de pila.
Lanzar y lanzar
La palabra clave 'Throw' se usa para lanzar la excepción, mientras que la palabra clave 'throws' se usa para declarar la excepción.
Programa de ejemplo de lanzamiento:
máscara de subred predeterminada para la clase d|_+_|
Programa de ejemplo de lanzamientos:
Los lanzamientos se utilizan para dar información de que este método arroja esta excepción en particular. Cuando llama a ese método en particular, debe manejar esa excepción.
|_+_|
Puntos clave a tener en cuenta:
- Las excepciones son eventos anormales que ocurren durante la ejecución del programa y afectarán el flujo de ejecución.
- Un error es diferente a las excepciones. Ejemplo de errores: Memoria sin error.
- Las excepciones marcadas se comprueban durante la compilación y es obligatorio tratar con esta excepción marcada.
- Se produce una excepción no comprobada durante el tiempo de ejecución.
Conclusión
Este tutorial sobre el manejo de excepciones en Java presentó la definición de excepciones, el manejo de excepciones y la jerarquía de excepciones en Java. También discutimos la clase de excepción en Java que proporciona varios constructores y métodos para acceder a las excepciones.
Exploramos una lista de las excepciones comunes que ocurren en Java y vimos los ejemplos de programación para la excepción principal. También discutimos los principales errores que ocurren en un programa Java junto con los tipos de excepciones y excepciones personalizadas.
=> Consulte TODOS los tutoriales de Java aquí.
Lectura recomendada
- Las 10 principales excepciones de selenio y cómo manejarlas (código exacto)
- Manejo de excepciones JDBC: cómo manejar excepciones SQL
- Cómo manejar la excepción en los scripts de SoapUI Groovy - Tutorial de SoapUI n. ° 11
- Tutorial Java String con String Buffer y String Builder
- Implementación de Java: creación y ejecución de un archivo JAR de Java
- Hilos de Java con métodos y ciclo de vida
- Máquina virtual Java: cómo JVM ayuda a ejecutar aplicaciones Java
- Modificadores de acceso en Java: tutorial con ejemplos