Como foi mostrado na video aula e no exercício "Programando defensivamente", o tipo da exceção lançada pelo construtor é uma NullPointerException
.
public Aluno(String nome, int numeroMatricula) {
if (nome == null) {
throw new NullPointerException("Nome não pode ser nulo");
}
// Resto do código
}
Lembro que em outro curso da plataforma, outro professor, comentando sobre a questão do tratamento de exceções, disse: "Não é uma boa prática deixar o tipo das exceções vazarem ao longo do programa" e que o ideal é encapsular a exceção original em uma RuntimeException
. Seguindo essa ideia, o construtor poderia ficar da seguinte forma e continuaria funcionando normalmente:
public Aluno(String nome, int numeroMatricula) {
if (nome == null) {
throw new RuntimeException("Nome não pode ser nulo");
}
// Resto do código
}
Minha dúvida com relação a isso é: Como se trata do lançamento de exceções diretamente no construtor, ainda seria uma boa prática fazer o encapsulamento, ou deixar que a exceção seja a mais específica possível neste caso seria melhor?