Atualizado: 26/08/2025

Este conteúdo é original e não foi gerado por inteligência artificial.

Criando suas Próprias Classes de Exceção em Java

Embora a biblioteca padrão do Java ofereça diversas classes de exceção para lidar com a maioria das situações que podem ocorrer durante a execução de um programa, há casos em que é necessário criar uma exceção personalizada com lógica específica.

Para criar uma exceção personalizada, basta herdar de Exception. Por exemplo, considere uma classe que calcula o fatorial de um número. Queremos lançar uma exceção específica se o número fornecido for menor que 1:

class Factorial {

    public static int getFactorial(int num) throws FactorialException {

        int result = 1;
        if (num < 1) {
            throw new FactorialException("The number is less than 1", num);
        }

        for (int i = 1; i <= num; i++) {
            result *= i;
        }
        return result;
    }
}

class FactorialException extends Exception {

    private int number;

    public int getNumber() {
        return number;
    }

    public FactorialException(String message, int num) {
        super(message);
        number = num;
    }
}

Nesse exemplo, o erro relacionado ao cálculo do fatorial é representado pela classe FactorialException, que herda de Exception e armazena informações relevantes sobre o problema.

O construtor de FactorialException chama o construtor da superclasse Exception para registrar a mensagem de erro super(message) e mantém um campo adicional para guardar o número cujo fatorial foi solicitado.

A exceção é lançada no método getFactorial usando o operador throw:

throw new FactorialException("The number is less than 1", num);

Como ela não é tratada no próprio método, declaramos no cabeçalho que o método pode lançá-la usando throws:

public static int getFactorial(int num) throws FactorialException

Para tratar essa exceção personalizada, usamos o bloco try..catch como em qualquer outra exceção:

public static void main(String[] args) {

    try {
        int result = Factorial.getFactorial(6);
        System.out.println(result);
    }
    catch (FactorialException ex) {
        System.out.println(ex.getMessage());
        System.out.println(ex.getNumber());
    }
}

Resumo

  • Exceções personalizadas são criadas herdando de Exception.
  • Elas podem ter campos e métodos próprios para armazenar informações adicionais sobre o erro.
  • A mensagem de erro é passada para a superclasse com super(message).
  • O lançamento é feito com throw new MinhaExcecao(...).
  • Se não for tratada no método atual, deve ser declarada com throws no cabeçalho.
  • O tratamento é feito com try..catch, como em qualquer outra exceção.
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com