Ativado ao implementar o middleware de tratamento global de exceções, validações com FluentValidation e mapeamento de respostas semânticas usando RFC 7807 (Problem Details) no .NET 8.
60
71%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./plugins/dotnet-clean-arch/skills/net8-error-handling-enforcer/SKILL.mdEsta habilidade orienta a padronização do tratamento de erros e exceções na camada de API do .NET 8, assegurando que o cliente receba respostas semânticas, estruturadas e consistentes com o padrão da indústria RFC 7807 (Problem Details).
Para evitar o vazamento de stack traces e manter a consistência de comunicação com consumidores externos:
Uso de Problem Details (RFC 7807):
Microsoft.AspNetCore.Mvc.ProblemDetails.Type: URI que identifica o tipo de erro (ex: https://tools.ietf.org/html/rfc7231#section-6.5.1).Title: Uma descrição curta e legível por humanos do tipo de erro (ex: "Validation error" ou "Business rule violation").Status: O código de status HTTP correspondente.Detail: Explicação detalhada do erro ocorrido no contexto específico.Instance: URI que identifica a requisição específica (ex: o caminho da rota HTTP acessada).Tradutor de Exceções de Domínio (HTTP 400 ou 422):
DomainException (lançadas para proteger invariantes no modelo rico) devem ser capturadas pelo middleware global e traduzidas para:
Detail deve conter a mensagem de erro encapsulada na exceção de domínio.Tradutor de Erros de Validação (HTTP 400):
ValidationException do FluentValidation) devem ser convertidas para HTTP 400 (Bad Request).ProblemDetails para incluir um dicionário Errors (ex: utilizando HttpValidationProblemDetails), onde:
No .NET 8, utilize a nova interface IExceptionHandler em vez de criar middlewares personalizados complexos do zero.
Implementação da Classe de Exceção:
IExceptionHandler (ex: GlobalExceptionHandler na camada de API ou Shared).TryHandleAsync mapeando de forma condicional cada tipo de exceção para sua respectiva resposta semântica.ILogger nesta classe e registrar o erro estruturado antes de responder ao cliente.Registro e Uso no Program.cs:
builder.Services.AddExceptionHandler<GlobalExceptionHandler>();builder.Services.AddProblemDetails();app.UseExceptionHandler();1cbe5bc
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.