logo

Excepciones marcadas y no marcadas en Java

En Java, 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, existen dos tipos de excepciones:

  1. Excepciones marcadas
  2. Excepciones no comprobadas

Excepciones Java comprobadas y no comprobadas



Excepciones comprobadas en Java

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

Por ejemplo, considere el siguiente programa Java que abre el archivo en la ubicación C: esta.txt e imprime las primeras tres líneas del mismo. El programa no se compila porque la función main() usa FileReader() y FileReader() genera una excepción marcada. Excepción de archivo no encontrado . También utiliza los métodos readLine() y close(), y estos métodos también arrojan una excepción marcada. IOExcepción

Ejemplo:

Java

inurl:.git/head




// 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: esta.txt'>);> >// Creating object as one of ways of taking input> >BufferedReader fileInput =>new> BufferedReader(file);> >// Printing first 3 lines of file 'C: esta.txt'> >for> (>int> counter =>0>; counter <>3>; counter++)> >System.out.println(fileInput.readLine());> >// Closing file connections> >// using close() method> >fileInput.close();> >}> }>

>

>

Producción:

Salida de la excepción marcada de Java

Para arreglar el programa anterior, necesitamos especificar una lista de excepciones usando throws, o necesitamos usar un bloque try-catch. Hemos utilizado tiros en el siguiente programa. Desde Excepción de archivo no encontrado es una subclase de IOExcepción , podemos simplemente especificar IOExcepción en la lista de lanzamientos y haga que el programa anterior esté libre de errores del compilador.

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: esta.txt'>);> >// Reading content inside a file> >BufferedReader fileInput =>new> BufferedReader(file);> >// Printing first 3 lines of file 'C: esta.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:	esta.txt'>

Excepciones no comprobadas en Java

Estas son las excepciones que no se verifican en el momento de la compilación. En C++, todas las excepciones no están marcadas, por lo que el compilador no lo obliga a manejar ni especificar la excepción. Depende de los programadores ser civilizados y especificar o detectar las excepciones. En Java, las excepciones bajo Error y Excepción en tiempo de ejecución Las clases son excepciones no marcadas, todo lo demás que se puede lanzar está marcado.

Considere el siguiente programa Java. Se compila bien, pero arroja Excepción aritmética cuando se ejecuta. El compilador le permite compilar porque Excepción aritmética es una excepción no comprobada.

Ejemplo:

Java




clave compuesta de clave primaria
// 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>

En resumen, las excepciones no comprobadas son excepciones de tiempo de ejecución que no es necesario detectar ni declarar en una cláusula throws. Estas excepciones suelen deberse a errores de programación, como intentar acceder a un índice fuera de los límites de una matriz o intentar dividir por cero.

Las excepciones no marcadas incluyen todas las subclases de la clase RuntimeException, así como la clase Error y sus subclases.

A continuación se muestran algunos ejemplos de excepciones no comprobadas en Java:

1. ArrayIndexOutOfBoundsException: Esta excepción se produce cuando intenta acceder a un índice de matriz que está fuera de los límites.
2. Excepción de puntero nulo: Esta excepción se produce cuando intenta acceder a una referencia de objeto nulo.
3. Excepción aritmética: Esta excepción se produce cuando intenta dividir por cero o realizar una operación aritmética no válida.