Excepciones marcadas y no marcadas en Java

Mohammad Irfan 12 octubre 2023
  1. Excepciones comprobadas en Java
  2. Excepción sin marcar en Java
Excepciones marcadas y no marcadas en Java

Este tutorial presenta qué son las excepciones marcadas y no marcadas en Java.

En Java, una excepción es una situación que ocurre durante la ejecución del código y finaliza la ejecución de forma anormal. Esta excepción puede ocurrir en tiempo de compilación o en tiempo de ejecución. Java clasifica ampliamente la excepción en dos tipos, marcada y no marcada. La excepción, que es verificada por el compilador en tiempo de compilación, se conoce como una excepción verificada. Mientras tanto, una excepción que se comprueba en tiempo de ejecución se denomina excepción no comprobada.

Para hacer frente a las excepciones, Java proporciona clases para cada excepción, como NullPointerException, ArrayIndexOutofBoundsException, IOException, etc. La clase Exception está en la parte superior de todas las clases de excepción y cualquier cosa que sea una subclase de Exception Excepto por RuntimeException y sus subclases es una excepción marcada.

Las clases de excepción que heredan la RuntimeException como ArithmeticException, NullPointerException y ArrayIndexOutOfBoundsException se denominan excepciones no comprobadas. Estos se comprueban en tiempo de ejecución.

Excepciones comprobadas en Java

Primero entendamos qué es una excepción y cómo afecta la ejecución del código. En este ejemplo, estamos escribiendo datos en un archivo y este código es propenso a excepciones como FileNotFoundException, IOException, etc. No proporcionamos ningún controlador de captura y, dado que se trata de excepciones comprobadas, el compilador de Java sí no compila el código y lanza las excepciones en tiempo de compilación. Vea el ejemplo a continuación.

import java.io.FileOutputStream;

public class SimpleTesting {
  public static void main(String[] args) {
    FileOutputStream fout =
        new FileOutputStream("/home/root/eclipse-workspace/java-project/myfile.txt");
    fout.write(1256);
    fout.close();
    System.out.println("Data written successfully");
  }
}

Producción :

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	Unhandled exception type FileNotFoundException
	Unhandled exception type IOException
	Unhandled exception type IOException

	at SimpleTesting.main(SimpleTesting.java:8)

Para evitar cualquier terminación anormal del código, debemos proporcionar un controlador de captura para el código. A continuación se muestra el mismo código que el anterior, pero tiene un controlador de captura para que el código no termine en el medio y se ejecute correctamente. Vea el ejemplo a continuación.

import java.io.FileOutputStream;
public class SimpleTesting {
  public static void main(String[] args) {
    try {
      FileOutputStream fout =
          new FileOutputStream("/home/irfan/eclipse-workspace/ddddd/myfile.txt");
      fout.write(1256);
      fout.close();
      System.out.println("Data written successfully");
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Producción :

Data written successfully

Excepción sin marcar en Java

El siguiente código arroja ArrayIndexOutOfBoundsException, que es una excepción sin marcar. Este código se compila correctamente pero no se ejecuta porque estamos accediendo a elementos fuera del rango del array; por lo tanto, el código lanza una excepción de tiempo de ejecución. Vea el ejemplo a continuación.

public class SimpleTesting {
  public static void main(String[] args) {
    int[] arr = {3, 5, 4, 2, 3};
    for (int i = 0; i < arr.length; i++) {
      System.out.println(arr[i]);
    }
    System.out.println(arr[23]);
  }
}

Producción :

3
5
4
2
3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 23 out of bounds for length 5
	at SimpleTesting.main(SimpleTesting.java:9)

Artículo relacionado - Java Exception