Fácil Java

Tratando divisão por zero

Enunciado

Escreva um programa que leia dois números inteiros e realize a divisão do primeiro pelo segundo. Use try/catch para tratar a exceção ArithmeticException caso o divisor seja zero. Exiba o resultado ou uma mensagem de erro.

Requisitos

  • O programa deve usar try/catch para capturar ArithmeticException.
  • Se o divisor for zero, exiba exatamente Erro: divisão por zero.
  • Se a divisão for válida, exiba o resultado no formato Resultado: X.

Código inicial

import java.util.Scanner;

public class DivisaoSegura {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        // TODO: realize a divisão e trate a exceção
        sc.close();
    }
}

Saída esperada

Resultado: 5
Erro: divisão por zero
Ver dica

Use o método nextInt() do Scanner para ler os números. Coloque a divisão dentro de um bloco try e capture ArithmeticException no catch.

Mostrar solução
import java.util.Scanner;

public class DivisaoSegura {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        try {
            int resultado = a / b;
            System.out.println("Resultado: " + resultado);
        } catch (ArithmeticException e) {
            System.out.println("Erro: divisão por zero");
        }
        sc.close();
    }
}

Passo a passo

  1. Importamos Scanner para ler a entrada do usuário.
  2. Criamos um objeto Scanner para ler da entrada padrão.
  3. Lemos dois números inteiros a e b.
  4. Dentro do bloco try, realizamos a divisão a / b.
  5. Se b for zero, a JVM lança ArithmeticException.
  6. O bloco catch captura essa exceção e exibe a mensagem de erro.
  7. Se não houver exceção, o resultado é impresso normalmente.
  8. Fechamos o Scanner.

Por que funciona

O try delimita o código que pode lançar exceção. Quando b == 0, a divisão inteira lança ArithmeticException, que é uma exceção unchecked (herda de RuntimeException). O catch captura especificamente essa exceção e trata o erro de forma controlada, evitando que o programa encerre abruptamente.

Erros comuns

  • Não capturar a exceção correta: usar catch (Exception e) funciona, mas é genérico demais. Prefira capturar ArithmeticException.
  • Esquecer de fechar o Scanner: não causa erro, mas é boa prática liberar recursos.
  • Dividir por zero sem tratamento: o programa lançaria ArithmeticException e encerraria com stack trace.

Outra forma de resolver

Você pode verificar antes de dividir:

if (b == 0) {
    System.out.println("Erro: divisão por zero");
} else {
    System.out.println("Resultado: " + (a / b));
}

Essa abordagem evita exceções, mas nem sempre é possível prever todos os erros.

Saída esperada

Resultado: 5
Erro: divisão por zero