Exceções Personalizadas em Java:

As exceções personalizadas são essenciais para um tratamento de erro mais significativo e específico em um programa Java. Criar suas próprias exceções permite capturar condições de erro que são exclusivas do seu domínio de aplicação, garantindo uma maneira mais clara de comunicar problemas específicos.


Quando Criar uma Exceção Personalizada?

A criação de exceções personalizadas é recomendada quando as exceções padrão de Java (como IllegalArgumentException ou NullPointerException) não cobrem adequadamente a lógica de erro que você quer manipular. Por exemplo, ao desenvolver um sistema bancário, você pode querer lançar uma exceção SaldoInsuficienteException para indicar quando um cliente tenta realizar uma transação com saldo insuficiente.

Criando uma Exceção Personalizada

Para criar uma exceção personalizada, basta criar uma nova classe que herde de Exception (se for uma exceção verificada) ou de RuntimeException (para exceções não verificadas). O exemplo a seguir mostra uma exceção personalizada chamada SaldoInsuficienteException.

public class SaldoInsuficienteException extends Exception {
    public SaldoInsuficienteException(String mensagem) {
        super(mensagem);
    }
}

Exemplo de Uso de Exceção Personalizada

Vamos agora criar um exemplo de aplicação em que a exceção SaldoInsuficienteException é lançada caso o usuário tente sacar mais do que o saldo disponível em conta.

public class ContaBancaria {
    private double saldo;

    public ContaBancaria(double saldoInicial) {
        this.saldo = saldoInicial;
    }

    public void sacar(double valor) throws SaldoInsuficienteException {
        if (valor > saldo) {
            throw new SaldoInsuficienteException("Saldo insuficiente para realizar o saque.");
        }
        saldo -= valor;
        System.out.println("Saque realizado com sucesso. Saldo atual: " + saldo);
    }
    
    public static void main(String[] args) {
        ContaBancaria conta = new ContaBancaria(500);

        try {
            conta.sacar(600);
        } catch (SaldoInsuficienteException e) {
            System.out.println("Erro: " + e.getMessage());
        }
    }
}

Explicação do Exemplo

  • Definindo o Construtor: A classe SaldoInsuficienteException recebe uma mensagem de erro no construtor e a passa para a classe pai (Exception), permitindo que a mensagem seja exibida ao capturar a exceção.
  • Lançando a Exceção: No método sacar, a exceção SaldoInsuficienteException é lançada quando o valor do saque excede o saldo da conta.
  • Capturando a Exceção: No main, o método sacar é chamado dentro de um bloco try-catch. Caso a exceção seja lançada, a mensagem de erro é capturada e exibida ao usuário.

Exceções Personalizadas Verificadas vs. Não Verificadas

Exceções Verificadas (Checked): Herde de Exception para forçar o uso de try-catch ou throws. São indicadas para erros que o programa não pode contornar sozinho e deve obrigatoriamente tratar.

public class IdadeInvalidaException extends Exception { }

Exceções Não Verificadas (Unchecked): Herde de RuntimeException. São utilizadas para erros que, na maioria das vezes, indicam falhas de lógica de programação e não obrigam o uso de blocos try-catch.

public class IdadeInvalidaRuntimeException extends RuntimeException { }

    Conclusão

    Exceções personalizadas tornam o código mais legível e o tratamento de erros mais específico, facilitando a identificação e a resolução de problemas únicos do seu domínio de aplicação.


    Comentários

    Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *