Pruebe Catch en Java: ejemplo de manejo de excepciones

Tabla de contenido:

Anonim

¿Qué es la excepción en Java?

La excepción en Java es un evento que interrumpe la ejecución de las instrucciones del programa y perturba el flujo normal de ejecución del programa. Es un objeto que envuelve la información de un evento de error que ocurrió dentro de un método y se pasa al sistema en tiempo de ejecución. En Java, las excepciones se utilizan principalmente para indicar diferentes tipos de condiciones de error.

En este tutorial, aprenderá:

  • ¿Qué es la excepción?
  • ¿Por qué necesitamos la excepción?
  • Cómo manejar la excepción
  • Prueba Catch Block
  • Jerarquía de clases de excepción de Java
  • Java finalmente bloque

Hay dos tipos de errores:

  1. Compilar errores de tiempo
  2. Errores de tiempo de ejecución

Los errores de tiempo de compilación se pueden clasificar nuevamente en dos tipos:

  • Errores de sintaxis
  • Errores semánticos

Ejemplo de errores de sintaxis:

En lugar de declarar

int a;lo declaró por error en cuanto in a;a qué compilador arrojará un error.

Ejemplo: ha declarado una variable

int a;y después de algunas líneas de código, vuelve a declarar un número entero como int a;. Todos estos errores se resaltan cuando compila el código.

Ejemplo de errores en tiempo de ejecución

Un error en tiempo de ejecución se denomina error de excepciones . 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, excepción de división por cero, etc.

Las excepciones en Java son algo que está fuera del control de los desarrolladores.

Haga clic aquí si el video no es accesible

¿Por qué necesitamos la excepción?

Suponga que ha codificado 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 está inactivo. Cuando su programa intentó acceder a él, se genera una excepción.

Cómo manejar la excepción

Hasta ahora hemos visto, la excepción está más allá del control del desarrollador. Pero culpar a los problemas ambientales de la falla de su código no es una solución. Necesita una programación robusta que se encargue de situaciones excepcionales. Dicho código se conoce como controlador de excepciones.

En nuestro ejemplo, un buen manejo de excepciones sería, cuando el servidor está inactivo, conectarse al servidor de respaldo.

Para implementar esto, ingrese su código para conectarse al servidor (usando las condiciones tradicionales if y else).

Verificará si el servidor está inactivo. Si es así, escriba el código para conectarse al servidor de respaldo.

Tal organización del código, usando el bucle "if" y "else" no es efectiva 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 excepcional incorporado.

  1. El código normal entra en un bloque TRY .
  2. El código de manejo de excepciones entra en el bloque CATCH

En nuestro ejemplo, el bloque TRY contendrá el código para conectarse al servidor. El bloque CATCH contendrá el código para conectarse al servidor de respaldo.

En caso de que 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 se ejecuta el código en el bloque catch.

Entonces, así es como se maneja la excepción en Java.

Sintaxis para usar try & catch

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) Una excepción aritmética: la división por cero se muestra a continuación para la línea # 5 y la línea # 6 nunca se ejecuta

Paso 4) Ahora veamos y examinemos cómo try and catch nos ayudará a manejar esta excepción. Pondremos la excepción que causa la línea de código en un bloque try , seguido de un bloque catch . 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 observa, se maneja la excepción y también se ejecuta la última línea de código. Además, tenga en cuenta que la Línea # 7 no se ejecutará porque tan pronto como se genera una excepción, el flujo de control salta al bloque de captura.

Nota: El objeto AritmeticException "e" contiene información sobre la excepción que se ha producido, lo que puede resultar útil para realizar acciones de recuperación.

Jerarquía de clases de excepción de Java

Después de que se ejecuta una instrucción catch, las demás se omiten y la ejecución continúa después del bloque try / catch. Los bloques de captura anidados siguen la jerarquía de excepciones.
  • Todas las clases de excepción en Java amplían la clase 'Throwable'. Throwable tiene dos subclases, Error y Exception
  • La clase Error define la excepción o los problemas que nuestro programa no espera que ocurran en circunstancias normales, por ejemplo, error de memoria, error de hardware, error de JVM, etc.
  • La clase Exception representa las excepciones que nuestro programa puede manejar, y nuestro programa se puede recuperar de esta excepción usando el bloque try and catch
  • Una excepción en tiempo de ejecución es una subclase de la clase de excepción. La excepción de este tipo representa la excepción que se produce en el tiempo de ejecución y que no se puede rastrear en el tiempo de compilación. Un excelente ejemplo de lo mismo es la excepción de división por cero o la excepción de puntero nulo, etc.
  • La excepción de E / S se genera durante las operaciones de entrada y salida
  • Las excepciones interrumpidas en Java se generan durante varios subprocesos.
Ejemplo: comprender el anidamiento de bloques try y catch

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 el comando, java JavaException .

Paso 3) Se genera una ArrayIndexOutOfBoundsException. Cambie el valor de int d a 0. Guarde, compile y ejecute el código.

Paso 4 ) Se debe generar una ArithmeticException.

Paso 5) Descomente 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 Exception es la clase base de ArithmeticException Exception. Cualquier excepción generada por ArithmeticException también puede ser manejada por la clase Exception, por lo que el bloque catch de ArithmeticException nunca tendrá la oportunidad de ejecutarse, lo que lo hace redundante. De ahí el error de compilación.

Java finalmente bloque

El bloque finalmente se ejecuta independientemente de que se genere una excepción en el bloque try. Es opcional usarlo con un bloque try.

 try {statement(s)} catch (ExceptiontType name) {statement(s)} finally {statement(s)}

En caso de que se genere una excepción en el bloque try, finalmente se ejecuta el bloque después de ejecutar el bloque catch.

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) Resultado esperado. Finalmente, el bloque se ejecuta aunque se genere una excepción.

Paso 4) Cambie el valor de la variable d = 1. Guarde, compile y ejecute el código y observe el resultado.

Resumen :

  • Una excepción es un error en tiempo de ejecución que interrumpe el flujo normal de ejecución del programa. La interrupción durante la ejecución del programa se denomina error o excepción.
  • Los errores se clasifican en dos categorías
    • Errores de tiempo de compilación: errores de sintaxis, errores semánticos
    • Errores de tiempo de ejecución: excepción
  • Un programa robusto debe manejar todas las excepciones y continuar con su flujo normal de ejecución del programa. Java proporciona un método de manejo excepcional incorporado
  • Exception Handler es un conjunto de código que maneja una excepción . Las excepciones se pueden manejar en Java usando try & catch.
  • Bloque de prueba : el código normal va en este bloque.
  • Bloque de captura : si hay un error en el código normal, entrará en este bloque