1
resposta

[Projeto] Usando exception

Utilizei o IllegalArgumentException nos construtores da classe conta, para que o número de agência passado não seja menor ou igual a 0. Seria correto utilizar dessa forma?

public class Conta {

    private double saldo;
    private int agencia;
    private int numero;
    private Cliente titular;

    private static int total;

    public Conta() {
        if(agencia <= 0) {
            throw new IllegalArgumentException("código inválido");
        }
    }
    public Conta(int agencia, int numero) {
        if(agencia <= 0) {
            throw new IllegalArgumentException("código inválido");
        }
        Conta.total++;
        System.out.println("O total de contas é " + total);
        this.agencia = agencia;
        this.numero = numero;
    }
    public void deposita(double valor) {
        this.saldo = this.saldo + valor;
    }

    public boolean saca(double valor) {
        if(this.saldo >= valor) {
            this.saldo -= valor;
            return true;
        }
        return false;
    }

    public boolean transfere(double valor, Conta destino) {
        if(this.saldo >= valor) {
            this.saca(valor);
            destino.deposita(valor);
            return true;
        }
        return false;
    }

    public double mostraSaldo() {
        return this.saldo;
    }

    public double getSaldo() {
        return saldo;
    }

    public int getAgencia() {
        return agencia;
    }

    public void setAgencia(int agencia) {
        this.agencia = agencia;
    }

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public Cliente getTitular() {
        return titular;
    }

    public void setTitular(Cliente titular) {
        this.titular = titular;
    }

    public static int getTotal() {
        return Conta.total;
    }
}
1 resposta

Olá Maximilian, tudo bem?

Sim, é correto utilizar o IllegalArgumentException dessa forma que você fez nos construtores da classe. No seu caso, o objetivo dessa verificação é garantir que o código da agência passado como parâmetro para o construtor é válido (não é menor ou igual a zero). Se o código da agência for inválido, uma exceção é lançada, impedindo que um objeto Conta seja criado com esse valor inválido.

Porém, é importante ressaltar que você precisa inicializar a variável agencia antes de fazer a verificação. No construtor sem parâmetros, a variável agencia não é inicializada antes da verificação, o que pode causar uma exceção NullPointerException. Você pode corrigir isso adicionando a inicialização da variável agencia ou removendo a verificação do construtor sem parâmetros (já que o construtor sem parâmetros não recebe um código de agência como parâmetro).