3
respostas

Quando usar o throw?

Não consegui pegar a ideia central por trás do throw.

Se ele lança uma exceção que aborta a execução do código, por que raios alguém lançaria isso em um código no mundo real ?

Pode parecer uma pergunta bem estupida, mas só o try/catch não seria suficiente?

3 respostas

Oi Luis, tudo bem ?

Cara, tem casos que você quer lançar uma exception, para deixar claro que deu algum erro.

Um exemplo bem legal:

public CreditCard(BigDecimal amount, Card card) {
        super(amount);
        if (card == null) throw new IllegalArgumentException("O cartão precisa ser passado");
        this.card = card;
    }

Como esse código está aberto a receber um cartão nulo, precisa ser validado, caso esteja, estou gerando uma exception para ser tratada em quem estiver criando essa classe

Muitas vezes você vai precisar criar sua própria exception, dessa forma vai haver necessidade de lançar sua exceção para que seja tratada em um outro momento.

Boa noite Luis,

Pelo que entendi é uma questão de boas práticas, por exemplo:

Exemplo 1

    public void saca (double valor) {
        if (this.saldo <valor) {
            System.out.println("Saldo Insuficiente");
        }else
            this.saldo-=valor;
        }
    }

Exemplo 2

public void saca(double valor) throws SaldoInsuficienteException {
        if (this.saldo < valor) {
            throw new SaldoInsuficienteException("Saldo: " + this.saldo + ", Valor: " + valor);
        }

        this.saldo -= valor;
    }

Veja que no Exemplo 2 está bem mais claro que o método pode não realizar a operação desejada, o que ainda é reforçado pelo fato de a classe throw utilizada precisar ser declarada na assinatura do método ou tratada por uma try/catch (exceção checked herdada da classe Exception).