Formação .NET Carreiras Cursos Eventos Blog

Clique em qualquer espaço vazio ou Esc para fechar

Entrar
Ver Planos
Ver Planos Entrar
Página Principal
Formação .NET
Carreiras
Todos os Cursos
Agenda
Blog
Início
Blog
Exception VS Domain Notification
Backend
Exception VS Domain Notification
25/05/2019
André Baltieri

Então você precisa validar suas entidades de domínio e tem duas opções. Talvez a mais clara seria utilizar Exceptions, mas será que ela é a melhor escolha?

Neste artigo vamos abrir espaço para o eterno debate sobre Exceptions VS Domain Notifications e vou colocar alguns motivos nos quais utilizo Domain Notifications nas validações do meu domínio.

O que é uma Exception?

Uma exceção oras, algo que não deveria acontecer mas aconteceu, algo quase que imprevisível.

O que é um Domain Notification

Uma notificação, uma mensagem sobre algum acontecimento no seu domínio.

O que acontece quando temos uma Exception?

Sua execução é parada e o evento ocorrendo no momento é gravado no Event Viewer (Caso do IIS).

É gerado um alarde maior, como se fosse um erro na sua aplicação e temos um custo maior, afinal logamos tudo nos eventos do host.

Devo parar de usar Exceptions?

Não! As exceções tem seu uso. Por exemplo, se você não consegue se conectar ao banco de dados, adianta prosseguir com o request? Este é um belo exemplo em que devemos utiliza-las.

Devo utiliza-las no Domínio?

Depende! Em tese eu não vejo um cenário onde por exemplo teria uma conexão ao banco no meu domínio.

Juntando isto com o fato da interrupção da execução e do log dos eventos, acaba complicando seu uso.

Imagine um cenário onde você estoura uma exceção no cadastro de clientes, no momento em que valida seu documento por exemplo (Afinal, não podemos salvar um cliente com documento inválido).

Em primeiro lugar, se esta fosse a primeira das suas N validações, seu fluxo seria interrompido aí, acarretando no retorno pra tela, o que incomodaria bastante o usuário, pois fica aquela validação picada. Corrige documento, nome errado corrige nome, data de nascimento errado, e por aí vai.

Em adicional, esta exceção, como comentei anteriormente, consumiria mais recursos, pelo fato de logar nos eventos da máquina, no caso, mais recursos de disco.

Agora imagina um cenário com milhões de cadastros? Ou um simples Brute Force ali, seria o bastante pra lotar a máquina.

Desta forma, quase nunca utilizo Exceptions no meu domínio. Utilizo Notification Pattern, com Flunt.

Repositório do Flunt

Fail Fast Validations

Outra abordagem que utilizo são os Fail Fast Validations, onde faço uma validação inicial nos meus Commands, removendo possíveis validações bestas das minhas entidades e não sobrecarregando elas. Afinal, partimos do princípio que as informações devem ao menos chegar as entidades.

Testes de Unidade

Trazer a regra de negócio para seu domínio tem um motivo: Testes de Unidade! Se você brigou tanto com o DBA pra sair das PROCS e não faz testes, não adianta nada.

É possível testarmos por exeções (ExpectedException), mas elas são mais falhas, pois se você espera uma exceção do tipo ArgumentNullException no Name do Customer e ocorre uma outra exceção do tipo ArgumentNullException no Email do Customer, seu teste vai dar falso positivo.

Curso 1975

Tem mais um mundo de coisas que eu poderia escrever aqui, mas falei tanto sobre isto que até transformei em um curso, o 1975 - Modelando Domínios Ricos, que está gratuito no balta.io.

1975 - Modelando Domínios Ricos

Conheça o autor

André Baltieri

Microsoft MVP

Me dedico ao desenvolvimento de software desde 2003, sendo minha maior especialidade o Desenvolvimento Web. Durante esta jornada pude trabalhar presencialmente aqui no Brasil e Estados Unidos, atender remotamente times da ?ndia, Inglaterra e Holanda, receber 8x Microsoft MVP e realizar diversas consultorias em empresas e projetos de todos os tamanhos.

Mais popular

1

Blazor Render Modes

Frontend

2

Blazor - Rotas e Navegação

Frontend

3

Uma visão geral do Blazor

Frontend

Assine nossa Newsletter

Inscreva-se em nossa newsletter e seja o primeiro a receber atualizações sobre novos cursos, dicas de carreira, e conteúdos exclusivos em programação. Junte-se à nossa comunidade de aprendizado e impulsione sua trajetória profissional! Não perca essa oportunidade. Inscreva-se agora e comece a transformar seu futuro!

Alves & Baltieri Informática LTDA ME 21.108.579/0001-80
Sobre Como funciona Seja premium Blog
Conteúdo Formação .NET Carreiras Cursos Eventos
Suporte Termos de uso Política de privacidade Política de cancelamento Contato
Redes Sociais Youtube Discord LinkedIn Instagram Facebook

© balta.io 2013 - 2025 | Todos os direitos reservados

An unhandled error has occurred. Reload 🗙