Saltar al contenido principal
Documentos
Java keywordsMatrices JavaProgramación orientada a objetos en JavaJava File HandlingIntroducción a JavaConceptos básicos del lenguaje Java

palabra clave throw en java

La palabra clave throw en Java se utiliza para lanzar explícitamente una excepción desde un método o cualquier bloque de código. Es una parte esencial del mecanismo de gestión de excepciones de Java, que permite a los desarrolladores crear y gestionar condiciones de error de forma controlada.

Utilización

La palabra clave throw se utiliza normalmente para lanzar excepciones comprobadas o no comprobadas. Cuando se lanza una excepción, se interrumpe el flujo normal del programa y el control se transfiere al bloque try-catch más cercano que pueda manejar la excepción.

Syntax

throw new ExceptionType("Error message");
  • ExceptionType: El tipo de excepción que se lanzará (por ejemplo, ArithmeticException, NullPointerException).
  • "Error message": Un mensaje de cadena que proporciona detalles sobre la excepción.

Ejemplos

Ejemplo 1: Lanzar una excepción comprobada

public class ThrowExample {
    public static void main(String[] args) {
        try {
            checkAge(15);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    static void checkAge(int age) throws Exception {
        if (age < 18) {
            throw new Exception("Age must be 18 or older.");
        }
    }
}

En este ejemplo, el método checkAge lanza un Exception si la edad proporcionada es inferior a 18 años. El método main llama a checkAge dentro de un bloque try y captura la excepción, imprimiendo el mensaje de error.

Ejemplo 2: Lanzar una excepción no comprobada

public class ThrowExample {
    public static void main(String[] args) {
        try {
            divide(10, 0);
        } catch (ArithmeticException e) {
            System.out.println(e.getMessage());
        }
    }

    static void divide(int a, int b) {
        if (b == 0) {
            throw new ArithmeticException("Division by zero is not allowed.");
        }
        System.out.println(a / b);
    }
}

Aquí, el método divide lanza un ArithmeticException si el divisor es cero. El método main captura la excepción e imprime el mensaje de error.

Ejemplo 3: Excepción personalizada

class CustomException extends Exception {
    public CustomException(String message) {
        super(message);
    }
}

public class ThrowExample {
    public static void main(String[] args) {
        try {
            validate(0);
        } catch (CustomException e) {
            System.out.println(e.getMessage());
        }
    }

    static void validate(int number) throws CustomException {
        if (number <= 0) {
            throw new CustomException("Number must be greater than zero.");
        }
    }
}

Este ejemplo muestra cómo lanzar una excepción personalizada. El método validate lanza un CustomException si el número es menor o igual que cero, y el método main lo atrapa y lo maneja.

Consejos y buenas prácticas

  • Utiliza mensajes significativos: Proporciona siempre mensajes significativos y descriptivos cuando lances excepciones para facilitar la depuración.
    throw new IllegalArgumentException("Parameter 'x' cannot be negative.");
  • Comprobado vs. Excepciones no verificadas: Utiliza excepciones comprobadas para condiciones recuperables y excepciones no comprobadas (excepciones en tiempo de ejecución) para errores de programación.
  • Excepciones personalizadas: Crea excepciones personalizadas para representar condiciones de error específicas en tu aplicación. Esto hace que tu código sea más legible y fácil de mantener.
  • Evita el uso excesivo: No abuses de las excepciones para el flujo de control. Deben utilizarse para condiciones excepcionales, no para comprobaciones condicionales regulares.
  • Excepciones de documentos: Documenta siempre las excepciones que puede lanzar un método utilizando la etiqueta @throws Javadoc.
    /**
     * @throws IllegalArgumentException if the parameter is invalid
     */
    public void someMethod(int param) {
        if (param < 0) {
            throw new IllegalArgumentException("Parameter cannot be negative.");
        }
    }

Aprende Java Essentials

Desarrolla tus conocimientos de Java desde la base y domina los conceptos de programación.
Empieza a aprender gratis