Capítulo 13: Tratamento de Exceções 🤠💎

Neste capítulo, vamos aprender a lidar com erros inesperados (erros em tempo de execução) usando os blocos try e catch do C#, com o tema Indiana Jones!


📖 O que são Exceções?

Uma exceção é um erro que acontece enquanto o programa está rodando (ex: tentar dividir por zero ou ler um arquivo que não existe). Se não tratarmos a exceção, o programa “crasha” e fecha sozinho!

No C#, usamos:

  • try: Onde colocamos o código que pode dar erro.
  • catch: Onde capturamos o erro e decidimos o que fazer.

📖 Exemplo Guiado: Em busca do Santo Graal

Vamos criar um código que simula a busca por um tesouro usando um ID. Se o ID for inválido, vamos gerar (lançar) uma exceção!

  1. Crie o arquivo busca_tesouro.cs na pasta src/:
using System;
 
string BuscarTesouro(int id) {
    if (id != 7) {
        // Lançando uma exceção manualmente!
        throw new Exception("Apenas poeira encontrada. Armadilha ativada!");
    }
    return "Santo Graal";
}
 
try {
    Console.WriteLine("Indiana Jones tenta pegar o calice...");
    string tesouro = BuscarTesouro(5); // Isso vai dar erro!
    Console.WriteLine($"Sucesso! Ele encontrou o {tesouro}");
}
catch (Exception e) {
    // Captura o erro e exibe a mensagem
    Console.WriteLine($"Erro: {e.Message}");
    Console.WriteLine("Indiana Jones rolou para fugir da pedra gigante!");
}

🕹️ Como Executar e Testar no VS Code

  1. Execute o projeto usando dotnet run.

Resultado Esperado:

Indiana Jones tenta pegar o calice...
Erro: Apenas poeira encontrada. Armadilha ativada!
Indiana Jones rolou para fugir da pedra gigante!

📊 Ilustração Visual: Fluxo do Try-Catch

Veja como o erro é desviado:

graph TD
    A[Código no Try] -->|Aconteceu um Erro| B[Bloco Catch]
    A -->|Tudo Certo| C[Continua o programa]
    B --> C

🛠️ Prática Obrigatória 1: Desarmando Armadilhas

Crie uma função chamada DesarmarArmadilha(int codigo). Se o código for 1234, exiba “Armadilha desarmada!“. Se for qualquer outro número, lance uma exceção com a mensagem “CABUM! A armadilha disparou!“. Use try/catch na main para testar o código correto e o incorreto!


🔑 Gabarito de Código

Prática 1: armadilha_excecao.cs

using System;
 
void DesarmarArmadilha(int codigo) {
    if (codigo != 1234) {
        throw new Exception("CABUM! A armadilha disparou!");
    }
    Console.WriteLine("Armadilha desarmada!");
}
 
try {
    DesarmarArmadilha(9999); // Vai falhar
}
catch (Exception e) {
    Console.WriteLine($"Alerta: {e.Message}");
}
 
try {
    DesarmarArmadilha(1234); // Vai dar certo
}
catch (Exception e) {
    Console.WriteLine($"Alerta: {e.Message}");
}

Capitulo Anterior | Proximo Capitulo