¿Qué es una excepción en Java?
Excepción en Java es un evento que interfiere con la ejecución de las instrucciones del programa e interfiere con el flujo normal de ejecución del programa. Es un objeto que contiene información sobre un evento de error que ocurrió dentro de un método y se reenvía al sistema en tiempo de ejecución. En Java, las excepciones se utilizan principalmente para expresar diferentes tipos de condiciones de error.
En este tutorial, aprenderá:
Hay dos tipos de errores:
- Recopilación de errores de tiempo
- Errores en tiempo de ejecución
Los errores de tiempo de compilación se pueden clasificar en dos tipos:
- Errores de sintaxis
- Errores semánticos
Ejemplos de errores de sintaxis:
En lugar de declarar int a;
lo confirmaste por error in a;
por lo que el compilador comete un error.
Ejemplo: tienes una variable declarada int a;
y después de varias líneas de código, declaras un número entero de nuevo como int a;
. Todos estos errores se resaltan al compilar el código.
Ejemplos de errores en tiempo de ejecución
Se llama al error de tiempo de ejecución Excepciones error. Es cualquier evento que interrumpa el flujo normal de ejecución del programa.
Ejemplos de excepciones son, excepción aritmética, excepción de puntero nulo, Departamento con excepción cero, etc.
Hay excepciones en Java que no están bajo el control de los desarrolladores.
Hacer clic aquí si el video no es accesible
¿Por qué necesitamos una excepción?
Suponga que codificó un programa para acceder al servidor. Las cosas funcionaron bien mientras desarrollaba el código.
Durante la ejecución de producción real, el servidor no funciona. Cuando su programa ha intentado acceder a él, se genera una excepción.
Cómo manejar una excepción
Hasta ahora hemos visto, existe una excepción fuera del control del desarrollador. Pero culpar al error de su código por problemas ambientales no es una solución. Necesita un registro fuerte, que se encarga de casos excepcionales. Se da tal código Controlador de excepciones.
Por ejemplo, un buen identificador de excepción sería, cuando el servidor está inactivo, conectarse al servidor de respaldo.
Para hacer esto, ingrese su código para conectarse al servidor (usando condiciones tradicionales y otras).
Verificará si el servidor está inactivo. Si es así, escriba el código para conectarse al servidor de respaldo.
Organizar dicho código, usando bucles «if» y «otros» es ineficaz cuando su código tiene múltiples excepciones de Java para manejar.
class connect{ if(Server Up){ // code to connect to server } else{ // code to connect to BACKUP server } }
Prueba Catch Block
Java proporciona un manejo excepcionalmente integrado.
- El código estándar entra en Intentalo cuadra.
- El código de manejo de excepciones ingresa al CAPTURA cuadra
En nuestro ejemplo, el código se conectará al servidor en un bloque TRY. El código tendrá un bloque CATCH para conectarse al servidor de respaldo.
Si el servidor está activo, se ignorará el código del bloque CATCH. En caso de que el servidor no funcione, se genera una excepción y el código se ejecuta en el bloque de captura.
Así es como se maneja la excepción en Java.
Uso proporcional de prueba y captura
try{ statement(s) } catch (exceptiontype name){ statement(s) }
Ejemplo
Paso 1) Copie el siguiente código en un editor
class JavaException { public static void main(String args[]){ int d = 0; int n = 20; int fraction = n/d; System.out.println("End Of Main"); } }
Paso 2) Guarde el archivo y compile el código. Ejecute el programa usando el comando java, JavaException
Paso 3) Excepción aritmética: la división con cero se muestra a continuación para la línea # 5 y la línea # 6 nunca se ejecuta
Paso 4) Ahora, examinemos cómo nos ayudará tratar de manejar esta excepción. Agregaremos la excepción causada por la línea de código i intentalo bloque, y un captura cuadra. Copie el siguiente código en el editor.
class JavaException { public static void main(String args[]) { int d = 0; int n = 20; try { int fraction = n / d; System.out.println("This line will not be Executed"); } catch (ArithmeticException e) { System.out.println("In the catch Block due to Exception = " + e); } System.out.println("End Of Main"); } }
Paso 5) Guarde, compile y ejecute el código. Obtendrá el siguiente resultado
Como puede observar, se maneja la excepción y se ejecuta la última línea de código. Además, tenga en cuenta que la línea # 7 no se ejecutará debido a tan pronto como la excepción del flujo de los puentes controlados se eleva al bloque de captura.
Nota: El objetivo de AritmeticException “e” contiene información sobre la ocurrencia de una excepción que puede ser útil para acciones correctivas.
Jerarquía de clases de excepción de Java
Después de que se ejecuta una declaración de arresto, las otras se pasan por alto y la ejecución continúa después del bloqueo de intento / arresto. Los bloques de captura anidados siguen una jerarquía de excepciones.
- Cada clase de excepción en Java extiende la clase ‘Throwable’. Throwable tiene dos subclases, Error y Exception
- La clase Error define la excepción o los problemas que no se espera que ocurran en circunstancias normales en nuestro programa, como Error de memoria, Error de hardware, Error de JVM, etc.
- La clase Exception describe las excepciones que nuestro programa puede manejar, y nuestro programa se puede recuperar de esta excepción usando un bloque try and catch
- La excepción de tiempo de ejecución es una subclase de la clase de excepción. La excepción de este tipo indica una excepción que se produce en el momento actual y no se puede rastrear en el momento de la compilación. Un excelente ejemplo de esto es una partición con una excepción cero o una excepción de puntero nulo, etc.
- La excepción OJ se genera durante las operaciones de entrada y salida
- Las excepciones de interferencia de Java se generan durante varios subprocesos.
Ejemplo: Para entender el anidamiento, intente capturar bloques.
Paso 1) Copie el siguiente código en un editor.
class JavaException { public static void main(String args[]) { try { int d = 1; int n = 20; int fraction = n / d; int g[] = { 1 }; g[20] = 100; } /*catch(Exception e){ System.out.println("In the catch block due to Exception = "+e); }*/ catch (ArithmeticException e) { System.out.println("In the catch block due to Exception = " + e); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("In the catch block due to Exception = " + e); } System.out.println("End Of Main"); } }
Paso 2) Guarde el archivo y compile el código. Ejecute el programa usando la línea de comando, java JavaException.
Paso 3) Se genera la excepción ArrayIndexOutOfBoundsException. Cambie el valor de int d a 0. Guarde, compile y ejecute el código.
Paso 4) Se debe generar descubrimiento aritmético.
Paso 5) Quite el comentario de la línea # 10 a la línea # 12. Guarde, compile y ejecute el código.
Paso 6) ¿Error de compilación? Esto se debe a que ArithmeticException es la clase básica de ArithmeticException. Cualquier excepción que genere ArithmeticException también puede ser manejada por la clase Exception. Sin embargo, el bloque de detención de ArithmeticException nunca tendrá la oportunidad de ejecutarse, lo que lo hace redundante. De ahí el error de compilación.
Java finalmente bloque
Es el bloque final ejecutado independientemente de generar una excepción en el bloque de intento. es Opcional para usar con un bloqueo de intento.
try { statement(s) } catch (ExceptiontType name) { statement(s) } finally { statement(s) }
En caso de que se genere una excepción en el bloque try, el bloque se ejecutará finalmente después de que se ejecute el bloque de captura.
Ejemplo
Paso 1) Copie el siguiente código en un editor.
class JavaException { public static void main(String args[]){ try{ int d = 0; int n =20; int fraction = n/d; } catch(ArithmeticException e){ System.out.println("In the catch block due to Exception = "+e); } finally{ System.out.println("Inside the finally block"); } } }
Paso 2) Guarde, compile y ejecute el código.
Paso 3) Rendimiento esperado. Finalmente, se ejecuta un bloque aunque se genere una excepción.
Paso 4) Cambiar el valor de la variable d = 1. Guardar, compilar y ejecutar el código y ver la salida.
Resumen:
- Un La excepción es un error de hora actual que interfiere con el flujo normal de ejecución del programa. La interrupción durante la implementación del programa se denomina error o excepción.
- Los errores se clasifican en dos categorías
- Recopilación de errores de tiempo: errores de sintaxis, errores semánticos
- Errores en tiempo de ejecución: excepción
- UNA. un programa sólido debe manejar todas las excepciones y continuar con su flujo normal de ejecución del programa. Java proporciona un método de manejo excepcionalmente integrado
- Un controlador de excepciones es un conjunto de código Controles de excepción. Las excepciones se pueden manejar en Java mediante prueba y captura.
- Prueba un bloque: Este bloque sigue un código normal.
- Bloque de captura: Si hay un error en el código normal, entrará en este bloque.