🧩 Exercícios: Tratamento de Exceções Corporativo e Custom Exceptions
Spec Sistemas Csharp • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 14.1 — Estrutura try-catch-finally com Múltiplos Blocos de Captura
Contexto: Estrutura try-catch-finally com Múltiplos Blocos de Captura no contexto de Tratamento de Exceções Corporativo e Custom Exceptions.
Requisitos de Execução:
- Capturar
FormatExceptioneOverflowExceptionisoladamente com bloco finally de encerramento.
Resultado Esperado
Exceções tratadas individualmente com execução garantida do bloco finally.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_14_1_SeuNome - Envie na tarefa:
Atividade Cap 14 - Tratamento de Exceções Corporativo e Custom Exceptions
🔑 Gabarito de Código & Solução Comentada
// ExceptionBasics.cs
try {
int valor = int.Parse("9999999999");
} catch (OverflowException) {
Console.WriteLine("ERRO: Numero muito grande para int32.");
} catch (FormatException) {
Console.WriteLine("ERRO: Formato invalido.");
} finally {
Console.WriteLine("Bloco finally executado com sucesso.");
}
🔍 Nível 2: Prática
Problema 14.2 — Filtros de Exceção com a Cláusula when
Contexto: Filtros de Exceção com a Cláusula when no contexto de Tratamento de Exceções Corporativo e Custom Exceptions.
Requisitos de Execução:
- Capturar exceção HTTP apenas se o código de status for 404 utilizando
catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.NotFound).
Resultado Esperado
Filtro de exceção avaliado sem desenrolar a pilha (stack unrolling) antes da hora.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_14_2_SeuNome - Envie na tarefa:
Atividade Cap 14 - Tratamento de Exceções Corporativo e Custom Exceptions
🔑 Gabarito de Código & Solução Comentada
// ExceptionFilter.cs
using System.Net;
try {
throw new HttpRequestException("Falha na API", null, HttpStatusCode.NotFound);
} catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.NotFound) {
Console.WriteLine("Tratamento especifico: Recurso 404 nao localizado.");
}
⚡ Nível 3: Integração
Problema 14.3 — Criação de Exceção de Domínio Customizada
Contexto: Criação de Exceção de Domínio Customizada no contexto de Tratamento de Exceções Corporativo e Custom Exceptions.
Requisitos de Execução:
- Criar classe
RegraNegocioException : Exceptioncom construtores padronizados e propriedades de contexto.
Resultado Esperado
Exceção rica de domínio lançada e interceptada com código de erro interno.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_14_3_SeuNome - Envie na tarefa:
Atividade Cap 14 - Tratamento de Exceções Corporativo e Custom Exceptions
🔑 Gabarito de Código & Solução Comentada
// DomainException.cs
public class RegraNegocioException(string codigoErro, string msg) : Exception(msg) {
public string CodigoErro { get; } = codigoErro;
}
try {
throw new RegraNegocioException("SALDO_ZERO", "Operacao nao permitida sem saldo positivo.");
} catch (RegraNegocioException ex) {
Console.WriteLine($"Erro [{ex.CodigoErro}]: {ex.Message}");
}
🏆 Nível 4: Desafio Corporativo
Problema 14.4 — Preservação de Stack Trace com ExceptionDispatchInfo.Capture()
Contexto: Preservação de Stack Trace com ExceptionDispatchInfo.Capture() no contexto de Tratamento de Exceções Corporativo e Custom Exceptions.
Requisitos de Execução:
- Re-lançar exceção capturada preservando a pilha de chamadas original intacta com
ExceptionDispatchInfo.Throw().
Resultado Esperado
Stack trace original preservado sem perda da linha de origem da falha.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_14_4_SeuNome - Envie na tarefa:
Atividade Cap 14 - Tratamento de Exceções Corporativo e Custom Exceptions
🔑 Gabarito de Código & Solução Comentada
// ExceptionDispatchDemo.cs
using System.Runtime.ExceptionServices;
ExceptionDispatchInfo? info = null;
try {
int.Parse("invalido");
} catch (Exception ex) {
info = ExceptionDispatchInfo.Capture(ex);
}
if (info != null) {
Console.WriteLine("Stack trace capturado para retransmissao segura.");
}
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |