Excepciones son un concepto fundamental en la programación Java, que te ayuda a manejar situaciones inesperadas en tu código. Mientras ya has aprendido cómo manejar excepciones, ahora es el momento de dar un paso más: lanzar y definir tus propias excepciones. En esta guía, te mostraré cómo puedes generar excepciones en tu código y crear clases de excepción personalizadas que te ayuden a hacer tu código más claro y robusto.
Principales conclusiones
- Puedes lanzar tus propias excepciones en Java para manejar mejor situaciones de error específicas.
- Definir tus propias clases de excepción te permite hacer que tu manejo de errores sea más natural y comprensible.
- Aprenderás a lanzar excepciones tanto en métodos como a trabajar con bloques Try-Catch.
Guía paso a paso
1. Refrescar el manejo de excepciones
Al principio, es importante recordar cómo es el manejo de excepciones en Java. Puedes recordar, por ejemplo, las construcciones try-catch, que te permiten capturar errores y reaccionar en consecuencia. En el curso anterior, viste cómo manejar una NumberFormatException cuando se realiza una conversión inválida de una cadena a un número.
2. Excepciones en tu propio código
Ahora vamos a ver cómo puedes lanzar excepciones en tu propio código. Esto puede ser especialmente útil si deseas definir condiciones de error específicas en tus programas que no se manejan de forma estándar en Java.

3. Crear una clase para validar
Consideremos una clase de ejemplo que llamaremos MiValidador. Esta clase tiene un método que espera un segmento de código a validar, en nuestro caso un código PIN. Si el código PIN ingresado no corresponde a un valor específico, se lanza una excepción.
4. Generar y capturar errores
Dentro del método validateCode, puedes establecer una sentencia if. Si el código no corresponde al valor esperado, lanzarás una nueva excepción que se verá así: throw new Exception("Solo 42 es la respuesta a todas las preguntas.");. Aquí utilizas la palabra clave throw para generar la excepción.
5. Ajustar la firma del método
Para indicar que este método podría lanzar una excepción, debes incluir la palabra clave throws en la firma del método. Por lo tanto, el método ahora se llama: public void validateCode(int code) throws Exception. De esta manera, se comunica claramente el lanzamiento de la excepción y todos los llamadores del método están obligados a manejarlo.
6. Manejar excepciones en un bloque Try-Catch
Para capturar la excepción, puedes incluir el método en un bloque try-catch. Al hacerlo, cuando ocurre una excepción, se ejecuta el código en el bloque catch, donde realizas la gestión del error específica, por ejemplo, mostrando un mensaje de error.
7. Relanzar excepciones opcionalmente
También puedes considerar lanzar nuevamente una excepción atrapada para pasarla a una lógica de nivel superior. Sin embargo, debes tener en cuenta que esto solo tiene sentido si no estás en el método principal, ya que aquí normalmente no sigue ningún otro código después del bloque catch.
8. Ventajas de las propias excepciones
La mayor ventaja de las propias clases de excepción es que están nombradas de forma intuitiva y son específicas para el caso de uso. En lugar de trabajar con excepciones genéricas, puedes definir clases específicas como NotFoundException o InvalidInputException. Estas no solo te ayudan en la identificación de errores, sino también en la depuración y el mantenimiento de tu código.

Resumen – Lanzar y definir excepciones en Java
Al lanzar y definir tus propias excepciones, obtienes una herramienta poderosa para manejar errores de manera efectiva y hacer tu código más legible. Puedes formular condiciones de excepción específicas y mejorar la separación lógica de los errores, lo que aumenta la mantenibilidad de tu programa.
Preguntas frecuentes
¿Cuál es la diferencia entre excepciones checked y unchecked?Las excepciones checked deben ser manejadas en la firma del método, mientras que las excepciones unchecked no tienen ese requisito.
¿Por qué debería crear mis propias excepciones?Las excepciones propias ayudan con mensajes de error específicos, que están diseñados para identificar problemas de manera más efectiva y hacer el código más legible.
¿Cómo lanzo una excepción en un método?Utilizas la palabra clave throw, seguida de una nueva instancia de la excepción.
¿Debo indicar en la declaración del método que lanzo una excepción?Sí, para eso utilizas la palabra clave throws en la firma del método.
¿Qué pasa si no manejo una excepción?El programa normalmente terminará con una excepción en tiempo de ejecución, a menos que la excepción sea inválida y no se maneje.