Sobes.tech
Junior

¿Cómo lanzar excepciones correctamente en Java?

sobes.tech AI

Respuesta de la IA

Las excepciones deben lanzarse cuando ocurre una situación anormal que interrumpe la ejecución normal del programa y requiere una atención inmediata.

Principios básicos:

  • Utilice excepciones para informar sobre errores, no para controlar el flujo de ejecución.
  • Elija el tipo de excepción más adecuado de la biblioteca estándar.
  • Cree sus propias clases de excepciones cuando las estándar no proporcionen suficiente información.
  • Incluya en el mensaje de la excepción detalles sobre la causa del error, incluido el contexto.
  • No capture excepciones que no pueda manejar correctamente. Es mejor propagarlas hacia arriba en la pila de llamadas.
  • Use bloques try-with-resources para cerrar recursos automáticamente.
  • Registre las excepciones que maneje o propague a un nivel superior.

Sintaxis correcta: throw new MyException("Mensaje de error");

Ejemplo:

// Creación de una excepción personalizada
public class InvalidParameterException extends Exception {
    public InvalidParameterException(String message) {
        super(message);
    }
}

// Método que lanza una excepción
public int divide(int a, int b) throws InvalidParameterException {
    if (b == 0) {
        throw new InvalidParameterException("División por cero no permitida");
    }
    return a / b;
}

// Uso del método y manejo de la excepción
public void performDivision(int x, int y) {
    try {
        int result = divide(x, y);
        System.out.println("Resultado: " + result);
    } catch (InvalidParameterException e) {
        // Registro del error
        System.err.println("Error en la división: " + e.getMessage());
        // Posible manejo adicional o propagación
    }
}

Diferencias entre excepciones Checked y Unchecked:

Tipo de excepción Hereda de Requiere manejo/declaración Ejemplo
Checked Exception (excepto RuntimeException) Sí (try-catch o throws) IOException, SQLException
Unchecked RuntimeException No (el compilador no requiere) NullPointerException, ArrayIndexOutOfBoundsException