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
DivideByZeroExceptione exibir 'Não é possível dividir por zero.' - O bloco
finallydeve 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
- O programa lê dois números inteiros usando
int.Parse. - Dentro do
try, realiza a divisãoa / b. Sebfor zero, umaDivideByZeroExceptioné lançada. - O
catch (DivideByZeroException)captura especificamente esse tipo de exceção e exibe a mensagem amigável. - O bloco
finallyé executado sempre, imprimindo 'Fim do cálculo.'. - Se a divisão for bem-sucedida, o resultado é impresso e o
finallytambé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
Exceptiongené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.ParselançaFormatException. 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.