Melhor maneira aplicar exceção

2 respostas
charlesbraw

Iai galera, blza?
estava lendo alguns livros de refactor e alguns artigos citados aqui no guj e fiquei com uma dúvida.

Gostaria de saber qual a melhor maneira de projetar minhas exceptions...
imagine o seguinte método.

public static String formatarNome(Pessoa p1) {
		if (p1 == null) {
			throw new IllegalArgumentException("Pessoa não pode ser null");
		}
		
		String nomeCompleto = "";
		nomeCompleto = p1.getNome() + p1.getApelido();
		return nomeCompleto;
		
	}

Esse método é só um exemplo mesmo hem.. afff.

Minha dúvida é, levantar um IllegalArgumentException? talvez não seria melhor um NPE ?
Concordo que é argumento inválido, logo o IllegalArgumentException serveria nesse caso.

Mas o que o método levantaria seria um NPE se não estivesse tratado o argumento, a vantagem de nós levantarmos o NPE é que podemos passar argumento para o construtor dele e a pilha fica mais facil de rastrear (a pilha começa o rastro lugar certo).

talvez o IllegalArgumentException deveria ser enviado para um tipo de caso como: faixa de valores fora do esperado etc...

o que vocês acham????

Outra coisa, li em um artigo que a galera aqui do fórum sempre indica e tem exemplos de métodos para levantar exceptions:

public static void naoPodeSerNull() {
        throw new IllegalArgumentException("Pessoa não pode ser null");
}

e criar alguns métodos sobrecarrendo o construtor passando mensagens, nomes de campos etc...

o que vocês gostam de fazer em métodos para livar valores null?

em breve, vou abrir um de exception em DAO.....

valeu.

2 Respostas

Marck

Olá!

Nesse exemplo, talvez a pessoa quisesse apenas mostrar como se lançar uma Exception.

Não faz muito sentido lançar a NPE manualmente.
Se você não tratar o Objeto nulo, com um if por exemplo, a NPE será lançada quando chegar na linha:

nomeCompleto = p1.getNome() + p1.getApelido()

abraço

charlesbraw

Marck blza cara,

Eu sei que é meio estranho lança uma NPE, a idéia de lança uma é porque posso passar algo mais informativo no construtor, se o método recebeu valores nulos onde não poderia, tenho que avisar o programador… tenho que lança uma exceção para que ele corrija na chamada do método.
É nessa hora que entra a dúvida, qual exception seria mais adequanda em caso de parâmetros null.

Valeu.

Criado 20 de fevereiro de 2011
Ultima resposta 22 de fev. de 2011
Respostas 2
Participantes 2