Creación de excepciones personalizadas en Java: Guía paso a paso
¿Qué es una excepción personalizada en Java?
Una excepción personalizada es una clase definida por el usuario que extiende java.lang.Exception (o RuntimeException para escenarios no comprobados). Al crear tu propio tipo de excepción puedes representar condiciones de error específicas del dominio, hacer el manejo de errores más claro y proporcionar contexto más rico a los llamadores.

En la práctica rara vez necesitas sobrescribir todos los métodos de Exception. La personalización más común implica añadir constructores que acepten un código de error, mensaje o causa subyacente. A continuación se muestra un ejemplo conciso que demuestra los pasos esenciales.
Ejemplo: Definición y lanzamiento de una excepción personalizada
Paso 1 – Crear la clase de excepción
public class MiExcepcion extends Exception {
private final int codigoError;
public MiExcepcion(int codigoError) {
super("Código de error: " + codigoError);
this.codigoError = codigoError;
}
@Override
public String toString() {
return "MiExcepcion{codigoError=" + codigoError + "}";
}
}
Paso 2 – Usar la excepción en código cliente
public class DemoExcepcionJava {
public static void main(String[] args) {
try {
// Simular una condición de fallo
throw new MiExcepcion(2);
} catch (MiExcepcion e) {
System.out.println(e);
}
}
}
Al ejecutar el programa verás la siguiente salida:

En el ejemplo anterior, la palabra clave throw crea una instancia de MiExcepcion y la pasa inmediatamente al bloque catch coincidente más cercano. El método toString() sobrescrito asegura que el mensaje impreso sea informativo.
Conclusiones clave
- Extiende
Exception(oRuntimeException) para crear un tipo personalizado. - Proporciona constructores que pasen mensajes significativos a la superclase.
- Sobrescribe
toString()ogetMessage()para una salida de depuración más clara. - Usa
throwpara lanzar la excepción; cápurala donde puedas manejarla o propagarla.
Siguiendo estas prácticas escribirás código Java más mantenible, autodocumentado y que maneja con elegancia condiciones de error específicas del dominio.
Java
- Palabra clave final en Java: Variables, métodos y clases
- Operador instanceof en Java: Guía completa
- Entendiendo las clases anidadas estáticas en Java: Uso, diferencias y ejemplos
- Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
- Patrón Singleton en Java explicado: Cómo implementarlo y usarlo de forma segura
- Dominando la Reflexión en Java: Inspeccionando clases, métodos y campos en tiempo de ejecución
- Dominando el manejo de excepciones en Java: Try, Catch, Finally, Throw y Throws explicados
- Dominando ObjectOutputStream de Java: Serialización, Métodos y Ejemplos Prácticos
- Dominando Java Generics: Construyendo Código Reutilizable y Type-Safe
- Dominando las operaciones de archivos en Java con java.io: creación, lectura, escritura y eliminación
- Crear un array de objetos en Java: Guía paso a paso