Envolver y volver a lanzar errores
Añada contexto a medida que los errores ascienden.
Envolver y volver a lanzar errores es una lección gratuita de Zig 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 Zig Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Zig Academy incluye 4 lecciones en total.
Los errores suben
Cuando una función no puede gestionar un fallo por sí misma, pasa el error a su llamador. Durante el proceso puede ajustarlo o volver a lanzarlo.
Volver a lanzar con try
La forma más sencilla de volver a lanzar un error es try. Reenvía el error original sin modificarlo al llamador, por lo que el mismo valor sigue propagándose hacia arriba.
const data = try readFile(path);Capturar y devolver
Para traducir un error, captúrelo y devuelva otro diferente. Así sustituye un error de bajo nivel por uno que encaja con su propia API.
const f = open(path) catch return error.ConfigMissing;Mapear errores con switch
Combine catch con un switch para asignar cada error subyacente a uno más claro, mientras deja pasar el resto sin cambios.
parse(s) catch |e| switch (e) {
error.Empty => return error.NoInput,
else => return e,
};Zig no tiene trazas de pila por valor
Un error en Zig es solo una etiqueta, no un objeto que contenga contexto. Para añadir detalles, vuelva a lanzar un error propio más descriptivo.
Adjuntar el contexto por separado
Como la etiqueta del error no contiene ningún mensaje, registre los detalles donde se produce el fallo y después devuelva el error de nivel superior al llamador.
open(path) catch |e| {
std.log.err("open {s}: {}", .{ path, e });
return error.LoadFailed;
};Ampliar el conjunto de errores
Si devuelve un error nuevo, el conjunto de errores de su función debe incluirlo. Un conjunto !T inferido se amplía para abarcar todo lo que devuelve.
fn load() !Config {
return open(".cfg") catch error.LoadFailed;
}Conservar o sustituir
Decida en cada capa: reenvíe exactamente el error con try o sustitúyalo por otro que tenga más sentido para su llamador. Ambas opciones son válidas.
Mantener limpios los límites
En el límite de un módulo, asigne los errores internos a un conjunto público pequeño. Así, los llamadores dependen de nombres estables y no de sus detalles internos.
Combinar con errdefer
Cuando vuelve a lanzar un error, cualquier errdefer activo en el ámbito se ejecuta primero. Así puede revertir los recursos y traducir el error en una sola ruta.
Fallos significativos
Envolver errores convierte una causa sin procesar en un mensaje que encaja con su dominio. El llamador ve un error claro en lugar de un detalle interno.
Comprobación rápida
Quiere sustituir el error de bajo nivel error.NotFound por su propio error.ConfigMissing para el llamador. ¿Cuál funciona?
Recapitulación
Ha vuelto a lanzar errores con try, los ha asignado mediante catch y switch, ha registrado el contexto y ha ampliado los conjuntos de errores para que los fallos sigan siendo significativos. ✅
Preguntas frecuentes
¿La lección «Envolver y volver a lanzar errores» es gratis?
Sí — el texto completo de «Envolver y volver a lanzar errores» 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 Zig Academy, actualiza a CoddyKit PRO. El curso de Zig Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Envolver y volver a lanzar errores»?
Añada contexto a medida que los errores ascienden. Practicas Zig 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 Zig Academy?
No se requiere experiencia previa. Zig 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 «Envolver y volver a lanzar errores»?
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 Zig Academy?
Sí. Cada lección de Zig 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
- Recuperarse con catch
- Usar switch con errores específicos
- errdefer para limpiar tras un fallo
- Envolver y volver a lanzar errores