Excepciones marcadas vs no marcadas en Java

La excepción es un evento no deseado o inesperado que ocurre durante la ejecución de un programa, es decir, en tiempo de ejecución, que interrumpe el flujo normal de las instrucciones del programa. En Java, hay dos tipos de excepciones:

  1. Excepciones comprobadas
  2. Excepciones no verificadas

Excepciones marcadas

Estas son las excepciones que se verifican en tiempo de compilación. Si algún código dentro de un método arroja una excepción verificada, entonces el método debe manejar la excepción o debe especificar la excepción usando la palabra clave throws . En la excepción verificada, hay dos tipos: excepciones totalmente verificadas y excepciones parcialmente verificadas. Una excepción completamente verificada es una excepción verificada donde también se verifican todas sus clases secundarias, como IOException, InterruptedException. Una excepción parcialmente marcada es una excepción marcada en la que algunas de sus clases secundarias no están marcadas, como Exception.

Por ejemplo, considere el siguiente programa Java que abre el archivo en la ubicación «C:\test\a.txt» e imprime las primeras tres líneas del mismo. El programa no compila, porque la función main() usa FileReader() y FileReader() arroja una excepción comprobada FileNotFoundException . También utiliza los métodos readLine() y close(), y estos métodos también lanzan la excepción comprobada IOException

Ejemplo:

Java

// Java Program to Illustrate Checked Exceptions
// Where FileNotFoundException occurred
 
// Importing I/O classes
import java.io.*;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // Reading file from path in local directory
        FileReader file = new FileReader("C:\\test\\a.txt");
 
        // Creating object as one of ways of taking input
        BufferedReader fileInput = new BufferedReader(file);
 
        // Printing first 3 lines of file "C:\test\a.txt"
        for (int counter = 0; counter < 3; counter++)
            System.out.println(fileInput.readLine());
 
        // Closing file connections
        // using close() method
        fileInput.close();
    }
}

Producción: 

Para arreglar el programa anterior, necesitamos especificar una lista de excepciones usando throws, o necesitamos usar un bloque try-catch. Hemos utilizado lanzamientos en el siguiente programa. Dado que FileNotFoundException es una subclase de IOException , podemos simplemente especificar IOException en la lista de lanzamientos y hacer que el compilador del programa anterior esté libre de errores.

Ejemplo:

Java

// Java Program to Illustrate Checked Exceptions
// Where FileNotFoundException does not occur
 
// Importing I/O classes
import java.io.*;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
        throws IOException
    {
 
        // Creating a file and reading from local repository
        FileReader file = new FileReader("C:\\test\\a.txt");
 
        // Reading content inside a file
        BufferedReader fileInput = new BufferedReader(file);
 
        // Printing first 3 lines of file "C:\test\a.txt"
        for (int counter = 0; counter < 3; counter++)
            System.out.println(fileInput.readLine());
 
        // Closing all file connections
        // using close() method
        // Good practice to avoid any memory leakage
        fileInput.close();
    }
}

Producción: 

First three lines of file "C:\test\a.txt"

Excepciones no verificadas 

Estas son las excepciones que no se verifican en tiempo de compilación. En C++, todas las excepciones no están marcadas, por lo que el compilador no obliga a manejar o especificar la excepción. Depende de los programadores ser civilizados y especificar o detectar las excepciones. En Java, las excepciones en las clases Error y RuntimeException son excepciones no verificadas, todo lo demás en arrojable está verificado. 

Considere el siguiente programa Java. Se compila bien, pero lanza ArithmeticException cuando se ejecuta. El compilador le permite compilar porque ArithmeticException es una excepción no verificada.

Ejemplo:

Java

// Java Program to Illustrate Un-checked Exceptions
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String args[])
    {
        // Here we are dividing by 0
        // which will not be caught at compile time
        // as there is no mistake but caught at runtime
        // because it is mathematically incorrect
        int x = 0;
        int y = 10;
        int z = y / x;
    }
}

Producción: 

Exception in thread "main" java.lang.ArithmeticException: / by zero
    at Main.main(Main.java:5)
Java Result: 1

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *