Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Utilização de exceção dentro do construtor

Como seria a utiização de exceção dentro de um construtor ? no caso da ocorrência da exceção o objeto não será criado .

3 respostas

Se a exceção for tratada dentro do construtor, por exemplo uma chamada http que falhou, o código pode tentar recursivamente até obter sucesso, ou então soltar uma exceção na pilha. O objeto não seria criado. Segue exemplo de código:

public class Usuario {
    private String nome;
    private int idade;

    public Usuario(String nome, int idade) throws IllegalArgumentException{
        if (nome.isEmpty() || idade < 18) {
            throw new IllegalArgumentException("Dados inválidos!");
        }
        this.nome = nome;
        this.idade = idade;
    }

}

Nesse caso se o objeto for instanciado com uma string vazia ou uma idade menor que 18 o programa vai soltar uma exceção chamada illegal argument exception, que significa que um argumento não permitido foi utilizado. Além disso adicionei uma mensagem na exceção.

Espero ter ajudado. Se eu te respondi corretamente favor marcar essa resposta como solução, para outras pessoas chegarem a solução mais rápido.

Perfeito. Mas se eu quiser tratar esta exceção teria que fazer um try em todo código da classe que consome a classe Usuário, é isto ?

solução!

Toda vez que você instanciar Usuário usando esse construtor que tem throws na declaração será necessário tratar a exceção, ou então adicionar throws no método que instancia a classe.

Note que somente seria necessário tratar a exceção na hora de criar o objeto, não em cada operação com ele, assumindo que somente o construtor pode jogar uma exceção.

Espero ter ajudado.