Descubra Como Criar Roslyn Analyzers e Melhorar Seu Código
Exceções Customizadas: Simplificando o Debug no Código
Imagine se o seu programa de controle de estoque está prestes a lançar um erro genérico “Exception” que não diz nada sobre o que realmente aconteceu. Já pensou na dor de cabeça para entender a causa real? Isso é um sinal de que está na hora de criar
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos. exceções customizadas
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código.! Elas servem para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! fornecer mensagens claras, específicas e alinhadas com a lógica do seu negócio - tornando a resolução de problemas muito mais simples e intuitiva.
A ideia é bem simples: em vez de usar apenas as exceções “prontas” do C#, você pode criar suas próprias classes que herdam de “Exception” (ou outra classe base
🧬 Herança: Reutilize Código sem Copiar e Colar (como um Jedi)!Aprenda a utilizar herança em C# para criar hierarquias de classes, reaproveitar código e manter projetos organizados de forma simples e escalável.) para representar situações de erro da forma que faça sentido para o seu domínio, como “EstoqueInsuficienteException” ou “UsuarioNaoAutorizadoException”.
Tabela de Conteúdo🔗
- Por que Criar Exceções Customizadas
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código.? - Estrutura Básica de uma Exceção Customizada
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código. - Exemplo Prático
📝 Logging com Serilog: Registre Tudo como um Detetive de Bugs!Aprenda a usar Serilog em .NET para registrar logs estruturados, identificar erros e enriquecer informações, transformando seu código num enigma solucionável.: Criando Exceções que Falam a sua Língua - Boas Práticas
🔢 Operadores Aritméticos: Faça Cálculos como uma Calculadora Humana!Aprenda a dominar operadores aritméticos em C# com exemplos práticos, técnicas de cálculo e dicas para evitar erros e maximizar resultados. de Nomenclatura e Organização - Vantagens e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. Possíveis Desvantagens - Conclusão
- Hierarquia de Exceções
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código.: Organizando o Caos - Integração com APIs REST
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos.
Por que Criar Exceções Customizadas?🔗
A principal razão é clareza. Com exceções
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código. definidas por você, suas mensagens de erro ficam mais próximas da regra de negócio ou do contexto do problema. Em vez de receber um genérico e assustador “Exception”, você pode ter algo como “EstoqueInsuficienteException” para deixar explícito o que deu errado.
Além disso, quando alguém (ou até mesmo você no futuro) for depurar o código, ter uma exceção com nome autoexplicativo acelera muito a identificação do problema
🤝 GitHub Básico: Versionamento para Iniciantes!Descubra como o GitHub facilita colaboração, versionamento e organização de código com este tutorial prático e essencial para desenvolvedores iniciantes..
Cenário real: Sistema bancário
// ❌ Ruim: Exceção genérica
if (saldo < valorSaque)
throw new InvalidOperationException("Operação inválida");
// ✅ Bom: Exceção específica
if (saldo < valorSaque)
throw new SaldoInsuficienteException(saldo, valorSaque);
Vantagens:
- 🎯 Precisão: Erros
🎲 Desafio: Crie um Sistema de Login com Tratamento de Erros Robusto!Aprenda a criar um sistema de login robusto em C#, com tratamento de erros adequado, validação e segurança para evitar vulnerabilidades. falam a linguagem do domínio - 🔍 Debug: Metadados
📜 Atributos Customizados: Metadados que Guiam seu Código!Descubra como atributos customizados potencializam a organização do código, facilitam auditorias e testes, e garantem eficiência. específicos no objeto da exceção - 🚦 Controle: Captura seletiva de erros
🎲 Desafio: Crie um Sistema de Login com Tratamento de Erros Robusto!Aprenda a criar um sistema de login robusto em C#, com tratamento de erros adequado, validação e segurança para evitar vulnerabilidades. no catch
Estrutura Básica de uma Exceção Customizada🔗
Uma exceção customizada
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código. em C# costuma herdar de Exception (ou de outra exceção
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código. base mais específica), e segue esta estrutura:
public class MinhaExcecaoPersonalizada : Exception
{
public MinhaExcecaoPersonalizada() { }
public MinhaExcecaoPersonalizada(string message)
: base(message)
{
}
public MinhaExcecaoPersonalizada(string message, Exception inner)
: base(message, inner)
{
}
}
1. Herdar de Exception: É o ponto de partida para qualquer exceção
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código. personalizada.
2. Construtores
🔑 Construtores: Inicialize Objetos como um Arquiteto de OOP!Descubra como os construtores em C# estruturam objetos, garantindo inicialização segura e promovendo boas práticas de desenvolvimento orientado a objetos.: Normalmente você replica os construtores
🔑 Construtores: Inicialize Objetos como um Arquiteto de OOP!Descubra como os construtores em C# estruturam objetos, garantindo inicialização segura e promovendo boas práticas de desenvolvimento orientado a objetos. que recebe de “Exception”, para não perder nenhuma funcionalidade.
3. Properties extras (opcional): Se você precisar armazenar dados específicos do erro, pode criar propriedades
⚡ Propriedades: Get e Set com Elegância (e sem Campos Privados Bagunçados)!Aprenda como utilizar propriedades em C# para encapsular dados, validar informações e manter um código organizado, seguro e de fácil manutenção. adicionais na sua classe.
Exemplo Prático: Criando Exceções que Falam a sua Língua🔗
Pense num sistema de vendas que precisa checar o estoque antes de concluir a compra. Se não houver livros suficientes em estoque, faz sentido lançar uma exceção
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código. “EstoqueInsuficienteException”. Assim:
public class EstoqueInsuficienteException : Exception
{
public int QuantidadeDisponivel { get; private set; }
// Construtor base
public EstoqueInsuficienteException()
: base("Estoque insuficiente para completar a operação.")
{
}
// Construtor que recebe uma mensagem
public EstoqueInsuficienteException(string message)
: base(message)
{
}
// Construtor que aceita a quantidade disponível para enriquecer o erro
public EstoqueInsuficienteException(string message, int quantidadeDisponivel)
: base(message)
{
QuantidadeDisponivel = quantidadeDisponivel;
}
}
Quando
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. você for verificar o estoque:
int estoqueAtual = 5;
int quantidadeSolicitada = 10;
if (quantidadeSolicitada > estoqueAtual)
{
throw new EstoqueInsuficienteException(
$"Quantidade solicitada excede o estoque disponível!",
estoqueAtual
);
}
Veja como a exceção
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código. não apenas deixa claro que o estoque é insuficiente, mas também informa quantas unidades estão realmente disponíveis, caso você queira exibir essa informação para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! quem fez a requisição.
Boas Práticas de Nomenclatura e Organização🔗
- Nomes significativos: Use o sufixo “Exception” e garanta que o prefixo descreva o evento ou o cenário que causou o problema
🤝 GitHub Básico: Versionamento para Iniciantes!Descubra como o GitHub facilita colaboração, versionamento e organização de código com este tutorial prático e essencial para desenvolvedores iniciantes.. - Seja conciso: “ArquivoNaoEncontradoException” ou “UsuarioNaoAutorizadoException” comunicam claramente a situação.
- Agrupamento
🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. por módulo: Se for criar muitas exceções
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código., considere organizá-las em pastas (ex.: “Excecoes/Estoque/EstoqueInsuficienteException.cs”).
Mantenha coerência e consistência para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! que toda a equipe saiba de imediato sobre o que o seu custom exception se trata.
Vantagens e Possíveis Desvantagens🔗
| Pontos Positivos | Pontos Negativos |
|---|---|
| Melhora a clareza ao lidar com erros específicos. | Excesso de classes de exceção pode poluir o código. |
| Mensagens de erro mais direcionadas ao domínio. | Nem sempre é necessário criar exceções para cada caso. |
| Facilita o debug e a manutenção do sistema. | Pode levar a complexidade extra se mal planejado. |
Em resumo, o uso correto de exceções
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código. personalizadas deixa o seu sistema mais expressivo e seguro
🛡️ Segurança em SignalR: Autenticação e Autorização!Descubra como implementar JWT e autorização com roles e claims no SignalR, garantindo segurança e controle de acessos em tempo real., mas crie apenas se fizer sentido real no contexto do seu projeto
🤝 GitHub Básico: Versionamento para Iniciantes!Descubra como o GitHub facilita colaboração, versionamento e organização de código com este tutorial prático e essencial para desenvolvedores iniciantes..
Hierarquia de Exceções: Organizando o Caos🔗
Uma boa prática é organizar suas exceções
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código. em hierarquias. Isso facilita a captura seletiva de erros e a organização do código. Por exemplo:
Benefícios:
- Captura hierárquica:
catch (ExcecaoNegocio) - Organização por camadas
- Filtragem
🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. em logs
Integração com APIs REST🔗
Ao trabalhar com APIs REST, você pode criar um middleware
🔒 Middleware: Intercepte Requests como um Vigilante!Descubra como usar middlewares no ASP.NET Core para monitorar, validar e controlar o fluxo de requisições de forma segura e eficiente em seu projeto. personalizado para tratar suas exceções e retornar respostas consistentes:
// Middleware personalizado
public class CustomExceptionMiddleware
{
public async Task InvokeAsync(HttpContext context)
{
try
{
await _next(context);
}
catch (ExcecaoNegocio ex)
{
context.Response.StatusCode = 400;
await context.Response.WriteAsJsonAsync(new
{
ex.Message,
ex.CodigoErro,
Detalhes = ex.StackTrace // Em desenvolvimento
});
}
}
}
{
"Message": "Pagamento recusado: saldo insuficiente",
"CodigoErro": "PAGAMENTO_001",
"Detalhes": "..."
}
Conclusão🔗
Exceções customizadas
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código. são como bilhetes escritos à mão para avisar que algo deu errado de uma forma que só o seu negócio entende. Com elas, você ganha clareza no código e facilita a correção de bugs - tudo isso falando a língua da sua aplicação. Use essa abordagem sempre que uma exceção pré-existente não for suficiente para expressar corretamente o problema, mas fique de olho para não sair criando exceções
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código. desnecessárias. A ideia é manter o fluxo de erros claro, produtivo e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. focado em resolver os desafios do seu sistema. Boa criação de exceções
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código. e até a próxima!
🛠 Casos de Uso Reais🔗
1. Integrações externas:
throw new IntegracaoPagamentoException("API PagSeguro offline", codigo: 503);
2. Regras de negócio complexas:
if (idade < 18 && valor > 1000)
throw new LimiteMenorIdadeException(idade, valor);
logger.LogError(ex, "Erro ao processar pedido {PedidoId}", ex.PedidoId);
Dominar exceções customizadas
💥 Try/Catch: Domine Exceções antes que Elas Dominem Você!Descubra como tratar exceções em C# com práticas eficientes utilizando try/catch. Aprenda a gerenciar erros e aumentar a robustez do seu código. é como ter um sistema de diagnóstico médico especializado para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! sua aplicação. Cada erro conta uma história rica em detalhes, acelerando a solução de problemas e melhorando a comunicação entre devs e stakeholders. 🩺💻
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- .NET Documentation: learn.microsoft.com/pt-br/dotnet/
- Awesome .NET: github.com/quozd/awesome-dotnet
- C# Language Specification: learn.microsoft.com/pt-br/dotnet/csharp/language-reference/language-specification/
- GitHub: Microsoft/.NET: github.com/dotnet
- Microsoft Learn: C# e .NET: learn.microsoft.com/pt-br/dotnet/csharp/

há 10 months atrás
há 10 months atrás
há 11 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 9 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 10 months atrás