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:
- Excepciones comprobadas
- 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