Sobes.tech
Middle

¿Qué tipo de excepción en Java no se puede manejar?

sobes.tech AI

Respuesta de la IA

Error.

Java divide las excepciones (Throwable) en tres tipos principales:

  1. Excepciones verificadas: Requieren manejo obligatorio o declaración en la firma del método (throws).
  2. Excepciones no verificadas (Excepciones en tiempo de ejecución): No requieren manejo obligatorio. Generalmente indican errores en la lógica del programa.
  3. Errores: Representan problemas graves relacionados con la máquina virtual Java o recursos del sistema. No se pueden manejar a nivel de aplicación, ya que no son problemas del propio código.

Ejemplos de Error:

  • OutOfMemoryError: La máquina virtual Java no pudo asignar memoria.
  • StackOverflowError: Se produjo un desbordamiento de pila (recursión demasiado profunda).
  • InternalError: Error interno de la Máquina Virtual Java.

El manejo de Error mediante try-catch no tiene sentido, ya que estos errores indican estados de los cuales la aplicación generalmente no puede recuperarse con éxito. En su lugar, cuando ocurre un Error, la aplicación suele finalizar.

Aunque técnicamente se puede escribir catch (Error e), dicho código se considera una mala práctica y no resuelve el problema principal.

try {
    // Código que puede causar OutOfMemoryError
    List<Object> list = new ArrayList<>();
    while (true) {
        list.add(new Object());
    }
} catch (OutOfMemoryError e) {
    // Este bloque se ejecutará, pero no podrás recuperarte,
    // ya que el sistema no tiene suficiente memoria.
    System.err.println("¡Memoria insuficiente! La aplicación probablemente terminará.");
    // Las acciones posteriores aquí son inútiles o provocarán SecurityException
} catch (Exception e) {
    // Manejo de otras excepciones
    e.printStackTrace();
}

En QA de automatización, si durante la ejecución de una prueba surge un Error, esto indica más bien un problema con el entorno de prueba, una configuración incorrecta de JVM o un defecto grave en la propia aplicación que llevó a una falla crítica, en lugar de una excepción manejable esperada. Tales escenarios requieren investigar la causa raíz fuera del código de prueba.