La excepción no reportada debe ser capturada o declarada como lanzada

Shuvayan Ghosh Dastidar 12 octubre 2023
  1. Java Error “la excepción no informada debe ser capturada o declarada para ser lanzada”
  2. Manejar la excepción en la función de llamada en Java
  3. Hacer que la función de llamada arroje la misma excepción en Java
La excepción no reportada debe ser capturada o declarada como lanzada

Java es un lenguaje orientado a objetos, fuertemente tipado y compilado y tiene el concepto de clases para aprovechar diferentes aspectos de la programación como la herencia y el polimorfismo. También es un buen soporte para manejar excepciones debido a funciones altamente anidadas.

Este artículo demostrará el error de tiempo de compilación la excepción no informada debe detectarse o declararse lanzada en Java.

Java Error “la excepción no informada debe ser capturada o declarada para ser lanzada”

Considere el siguiente ejemplo de código.

public class MyApp {
  public static void main(String[] args) {
    System.out.println("Hello World");
    System.out.println(divide(3, 0));
  }

  public static int divide(int a, int b) throws Exception {
    int c = a / b;
    return c;
  }
}

El siguiente error se obtiene cuando el ejemplo de código anterior se compila utilizando javac MyApp.java.

MyApp.java:7: error: unreported exception Exception; must be caught or declared to be thrown
        System.out.println(divide(3,0));
                                 ^
1 error

Entonces, ¿Que esta pasando aquí?

La función divide(int a, int b) arroja una Excepción que no se captura ni se maneja en ninguna parte de la función de llamada, que en este caso es main(String[] args). Se puede resolver manejando la excepción o haciendo que la función de llamada arroje la misma excepción.

Manejar la excepción en la función de llamada en Java

Entonces, en la última sección, este fue uno de los enfoques para resolver el error. Entendámoslo con un ejemplo considerando el ejemplo de código discutido anteriormente.

public class MyApp {
  public static void main(String[] args) {
    System.out.println("Hello World");
    try {
      System.out.println(divide(3, 0));
    } catch (Exception e) {
      System.out.println("Division by zero !!!");
    }
  }

  public static int divide(int a, int b) throws Exception {
    int c = a / b;
    return c;
  }
}

Ahora, cuando intentamos compilar el código, se compila con éxito y se obtiene el siguiente resultado al ejecutar el código.

Hello World
Division by zero !!!

Por lo tanto, la excepción ahora se maneja en el método main, y se ejecuta la instrucción print en el bloque catch.

Hacer que la función de llamada arroje la misma excepción en Java

Entonces, el otro enfoque es hacer que la función de llamada también arroje la misma excepción. Tomemos un ejemplo de cómo se puede lograr eso.

public class MyApp {
  public static void main(String[] args) throws Exception {
    System.out.println("Hello World");
    try {
      performOperation();
    } catch (Exception e) {
      System.out.println("Division by zero!!");
    }
  }

  public static void performOperation() throws Exception {
    divide(3, 0);
  }

  public static int divide(int a, int b) throws Exception {
    int c = a / b;
    return c;
  }
}

Así que hemos tomado el ejemplo anterior y hemos añadido una función adicional, performOperation(), en el medio. Hemos hecho que la función performOperation() también arroje la misma Excepción que divide(int a, int b); por lo tanto, se compila con éxito y se puede obtener el mismo resultado.

Shuvayan Ghosh Dastidar avatar Shuvayan Ghosh Dastidar avatar

Shuvayan is a professional software developer with an avid interest in all kinds of technology and programming languages. He loves all kinds of problem solving and writing about his experiences.

LinkedIn Website

Artículo relacionado - Java Error