ErrorOr pour C# (.NET) : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

ErrorOr pour C# (.NET) : guide complet de gestion des erreurs sans exceptions

Dans le développement moderne en C# (.NET), la gestion des erreurs repose traditionnellement sur le mécanisme des exceptions. Cependant, cette approche présente plusieurs inconvénients : les exceptions perturbent le flux d'exécution, créent une surcharge de la pile et, surtout, n'indiquent pas toujours explicitement au développeur qu'une méthode peut échouer. La bibliothèque ErrorOr propose une alternative — une approche fonctionnelle où le résultat d'une opération est renvoyé sous la forme d'un objet spécial pouvant contenir soit une valeur de succès, soit une liste d'erreurs.

L'idée principale d'ErrorOr est de rendre la gestion des erreurs explicite et type-safe. Au lieu de lever une exception, la méthode renvoie un objet de type ErrorOr<TValue>. Le code appelant doit vérifier si l'opération a réussi avant d'utiliser le résultat. Cela évite de nombreux bugs liés aux exceptions non gérées et rend le code plus prévisible et plus facile à comprendre.

La bibliothèque s'inspire de langages dotés d'un système de types avancé, comme Rust (type Result<T, E>) et F# (type Result<'T, 'TError>). ErrorOr est idéale pour les architectures Clean Architecture, Domain-Driven Design (DDD) et les projets CQRS, où il est important de séparer clairement les scénarios de succès et d'erreur. Elle fonctionne également très bien avec le pattern « Railway Oriented Programming », permettant de construire des chaînes d'opérations avec transmission automatique des erreurs.

Installation

L'installation de la bibliothèque ErrorOr dans un projet .NET se fait via le gestionnaire de packages NuGet. Exécutez l'une des commandes suivantes dans le terminal ou la console du gestionnaire de packages :

dotnet add package ErrorOr

Ou, si vous utilisez la console du gestionnaire de packages dans Visual Studio :

Install-Package ErrorOr

Après l'installation, ajoutez l'espace de noms dans votre fichier de code :

using ErrorOr;

Démarrage rapide : exemple minimal fonctionnel

Écrivons une fonction simple qui divise un nombre par un autre. Au lieu de lever une exception en cas de division par zéro, nous renverrons un ErrorOr<double>.

using ErrorOr;

public static class Calculator
{
    public static ErrorOr<double> Divide(double dividend, double divisor)
    {
        if (divisor == 0)
        {
            // Retourne une erreur si le diviseur est zéro
            return Error.Validation("Calculator.DivisionByZero", "Le diviseur ne peut pas être zéro.");
        }

        // Retourne un résultat réussi
        return dividend / divisor;
    }
}

// Utilisation
public class Program
{
    public static void Main()
    {
        ErrorOr<double> result = Calculator.Divide(10, 2);

        if (result.IsError)
        {
            Console.WriteLine($"Opération échouée : {result.FirstError.Description}");
        }
        else
        {
            Console.WriteLine($"Résultat : {result.Value}");
        }

        // Exemple avec erreur
        ErrorOr<double> errorResult = Calculator.Divide(10, 0);
        if (errorResult.IsError)
        {
            Console.WriteLine($"Opération échouée : {errorResult.FirstError.Description}");
        }
    }
}

Dans cet exemple, nous voyons les éléments clés : la création d'une erreur via Error.Validation(), le retour d'une valeur de succès (conversion implicite) et la vérification du résultat via la propriété IsError.

Méthodes, fonctions et classes principales

Voici une analyse détaillée des composants clés de la bibliothèque ErrorOr. Pour chaque élément, la signature, la description et un exemple de code fonctionnel sont fournis.

1. Classe ErrorOr<TValue>

Signature : public rea

Recommendations