Retour au cours

Propagation d'erreurs et errdefer

Cours complet : Programmation Zig de Zéro à Héros

errdefer

errdefer est similaire à defer, mais il ne s'exécute que si la fonction retourne une erreur. C'est vital pour nettoyer un travail partiel lors d'une opération qui échoue.

zig fn createData() !*Data { const data = try allocator.create(Data); errdefer allocator.destroy(data); // Nettoyage uniquement en cas d'erreur !

try data.initialize();
return data;

}

Si initialize() échoue, la mémoire est libérée. S'il réussit, la mémoire est conservée.