Luis Soares
← Voltar aos artigos
Arquitetura12 mai 2026·7 min

Result pattern: erros sem exceções em C#

Tornando o fluxo de erro explícito e testável, sem abusar de try/catch.

LS
Luis Soares
Arquiteto de software — .NET · Azure · IA
[ Arquitetura ]

Exceções para fluxo de negócio escondem caminhos de erro e tornam testes verbosos. O Result pattern torna falhas explícitas no tipo de retorno.

Shape mínimo

csharp
public readonly record struct Result<T>
{
    public T? Value { get; }
    public Error? Error { get; }
    public bool IsSuccess => Error is null;
}

Onde usar

Validação de entrada, regras de domínio, chamadas externas com falha esperada — tudo isso combina com Result. Reserve exceções para bugs e falhas realmente excepcionais (OOM, rede down inesperada).

Traduzir try/catch em if (result.IsFailure) parece mais código, mas o compilador passa a te lembrar de tratar o erro. Em APIs, mapeie Error para status HTTP de forma centralizada.

LS

Escrito por Luis Soares — arquiteto de software, rumo ao Microsoft MVP.