Fácil C#

Tratando divisão por zero

Enunciado

Escreva um programa que leia dois números inteiros e realize a divisão do primeiro pelo segundo. Trate o caso de divisão por zero com try/catch e exiba uma mensagem amigável. Use finally para exibir 'Fim do cálculo.'

Requisitos

  • O programa deve solicitar dois números ao usuário.
  • Deve capturar DivideByZeroException e exibir 'Não é possível dividir por zero.'
  • O bloco finally deve exibir 'Fim do cálculo.' independentemente do resultado.

Código inicial

using System;

class Program
{
    static void Main()
    {
        Console.Write("Digite o numerador: ");
        int a = int.Parse(Console.ReadLine());
        Console.Write("Digite o denominador: ");
        int b = int.Parse(Console.ReadLine());

        // TODO: implemente try/catch/finally
    }
}

Saída esperada

Digite o numerador: 10
Digite o denominador: 0
Não é possível dividir por zero.
Fim do cálculo.
Ver dica

Coloque a divisão dentro do try. No catch, capture DivideByZeroException.

Mostrar solução
using System;

class Program
{
    static void Main()
    {
        Console.Write("Digite o numerador: ");
        int a = int.Parse(Console.ReadLine());
        Console.Write("Digite o denominador: ");
        int b = int.Parse(Console.ReadLine());

        try
        {
            int resultado = a / b;
            Console.WriteLine($"Resultado: {resultado}");
        }
        catch (DivideByZeroException)
        {
            Console.WriteLine("Não é possível dividir por zero.");
        }
        finally
        {
            Console.WriteLine("Fim do cálculo.");
        }
    }
}

Passo a passo

  1. O programa lê dois números inteiros usando int.Parse.
  2. Dentro do try, realiza a divisão a / b. Se b for zero, uma DivideByZeroException é lançada.
  3. O catch (DivideByZeroException) captura especificamente esse tipo de exceção e exibe a mensagem amigável.
  4. O bloco finally é executado sempre, imprimindo 'Fim do cálculo.'.
  5. Se a divisão for bem-sucedida, o resultado é impresso e o finally também executa.

Por que funciona

O try delimita o código que pode lançar a exceção. O catch trata apenas o tipo esperado, evitando capturar outros erros inadvertidamente. O finally garante a execução da mensagem final, simulando uma limpeza ou aviso.

Erros comuns

  • Capturar Exception genérico: catch (Exception e) captura qualquer erro, dificultando a identificação. Prefira o tipo específico.
  • Esquecer o finally: sem ele, a mensagem final não é exibida em caso de erro.
  • Não tratar FormatException: se o usuário digitar texto não numérico, int.Parse lança FormatException. Para este exercício, considere que a entrada é válida.

Outra forma de resolver

Usar int.TryParse para evitar exceções na leitura e verificar b == 0 antes de dividir. Isso é preferível quando a validação é simples e esperada.

Saída esperada

Digite o numerador: 10
Digite o denominador: 0
Não é possível dividir por zero.
Fim do cálculo.