Ir al contenido

throw

El control de excepciones no se limita a capturar errores que ocurren de forma automática, ya que tambien es posible que el programador decida lanzar manualmente una excepción al detectar una situación que inhabilite que el programa continúe. Esta acción se realiza utilizando la palabra clave throw.


throw se utiliza para interrumpir el flujo normal del programa y señalar que ha ocurrido un error específico.

Esta interrupción no significa que todo el programa se «congele» o se detenga en seco, sino que el método actual se detiene inmediatamente y la excepción lanzada se propaga hacia los métodos que llamaron a ese método (salvo que se capture localmente con un bloque catch).

throw no es una clase ni un método, sino una palabra clave (keyword) del lenguaje Java.

Cuando se dice que throw lanza una instancia de una excepción, significa lo siguiente:

  • Se crea un objeto de una clase que hereda de Throwable.
  • Ese objeto representa un error específico con un tipo (como IllegalArgumentException) y un mensaje.
  • Al usar throw, ese objeto se envía hacia arriba en la pila de llamadas para ser manejado.

Ejemplo:

throw new IllegalArgumentException("La edad no puede ser negativa.");

Aquí se está creando e instanciando un objeto de tipo IllegalArgumentException y se está lanzando con throw.


¿Qué tipos de objetos se pueden lanzar con throw?

Sección titulada «¿Qué tipos de objetos se pueden lanzar con throw?»

La instrucción throw solo puede lanzar objetos que sean instancias de la clase Throwable o de cualquiera de sus subclases. Esto incluye tanto errores como excepciones.
Algunos ejemplos de objetos válidos que pueden ser instanciados y lanzados:

  • new IllegalArgumentException("...")
  • new NullPointerException("...")
  • new IOException("...")
  • new RuntimeException("...")

  1. IllegalArgumentException
    Se utiliza cuando un argumento recibido por un método no cumple una condición lógica esperada:
public void setTasa(double tasa) {
if (tasa < 0 || tasa > 1) {
throw new IllegalArgumentException("La tasa debe estar entre 0 y 1.");
}
}
  1. NullPointerException
    Se lanza cuando un parámetro que no debe ser nulo lo es:
public void procesarNombre(String nombre) {
if (nombre == null) {
throw new NullPointerException("El nombre no puede ser nulo.");
}
}