Excepciones personalizadas y rethrow
Definir errores significativos y volver a lanzarlos.
Excepciones personalizadas y rethrow es una lección gratuita de Dart Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Dart Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Dart Academy incluye 4 lecciones en total.
Errores con significado
Las excepciones genéricas ocultan la intención. Una excepción personalizada identifica el problema exacto y hace que los fallos sean comprensibles en toda la aplicación. 🏷️
Implementar Exception
Cree una clase que implements Exception. Así se marca como un tipo de error que Dart y quienes lean el código reconocerán al instante.
class PaymentException implements Exception {}Incluir un mensaje
Proporcione a la excepción un campo message mediante su constructor, para que los gestores puedan saber por qué ocurrió.
class PaymentException implements Exception {
final String message;
PaymentException(this.message);
}Un toString claro
Reescriba toString para que, al imprimir la excepción, se muestre una frase clara en lugar de solo el nombre de la clase.
@override
String toString() => 'PaymentException: $message';Lanzar una excepción propia
Lance una excepción personalizada igual que una integrada. Utilice throw con una instancia nueva cuando se infrinja una regla.
throw PaymentException('Card declined');Capturar por su tipo
Capture su excepción con una cláusula on, igual que los tipos integrados, para gestionar específicamente ese caso.
try {
pay();
} on PaymentException catch (e) {
print(e);
}A veces no puede solucionarlo
Es posible que un gestor registre un error, pero no pueda resolverlo. En lugar de ignorarlo, puede pasarlo a la siguiente capa con rethrow.
La palabra clave rethrow
rethrow vuelve a lanzar la excepción actual y conserva su traza de pila original, para que quienes llaman al código vean dónde comenzó realmente.
catch (e) {
log(e);
rethrow;
}rethrow es mejor que throw e
Escribir throw e reinicia la traza de pila; rethrow la conserva intacta. Prefiera siempre rethrow al volver a lanzar una excepción dentro de un catch.
Registre y propague
Un patrón habitual: capture el error para registrarlo y después utilice rethrow, de modo que una capa superior decida cómo recuperarse.
catch (e) {
logger.error(e);
rethrow;
}Añadir campos útiles
Las excepciones personalizadas pueden contener datos adicionales, como un code o el valor que provocó el fallo, para proporcionar a los gestores un contexto más completo.
class ApiException implements Exception {
final int code;
ApiException(this.code);
}Comprobación rápida
¿Por qué utilizar rethrow en lugar de throw e dentro de un catch?
Resumen
Ahora puede crear excepciones significativas que implementen Exception, contengan datos y utilicen rethrow para propagar los fallos correctamente. 🚀
Preguntas frecuentes
¿La lección «Excepciones personalizadas y rethrow» es gratis?
Sí — el texto completo de «Excepciones personalizadas y rethrow» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Dart Academy, actualiza a CoddyKit PRO. El curso de Dart Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Excepciones personalizadas y rethrow»?
Definir errores significativos y volver a lanzarlos. Practicas Dart Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Dart Academy?
No se requiere experiencia previa. Dart Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Excepciones personalizadas y rethrow»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Dart Academy?
Sí. Cada lección de Dart Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- throw, try y catch
- Cláusulas on y tipos de excepción
- finally y limpieza garantizada
- Excepciones personalizadas y rethrow