Isso aqui está certo? (tratamento de exceções)

7 respostas
marcio0

Boa tarde galera
Estou fazendo uns exercícios aqui com tratamento de exceções, e quero saber se esse código que escrevi está certo:

public void setNome( String nome ) throws IllegalArgumentException { if ( nome == "" ) throw new IllegalArgumentException(); else this.nome = nome; }

A minha idéia é que esse set, no caso do nome vir em branco, vai passar um erro pra classe que o chamou (construtor), que irá passar para a classe que o chamou.
Isso está certo? A idéia é essa mesmo? Ou tenho que fazer o tratamento com try e catch ai mesmo?
Tenho que fazer o mesmo com o construtor? (throws …exception)?

Obrigadão a quem puder ajudar!

7 Respostas

L

marcio0,

Esse trecho de código q vc copiou está dentro de um POJO seu? Se tiver, acredito que talez não seja muito bom conter este tipo de “lógica” dentro dele

se for um sistema web, por exemplo, vc pode validar se o nome está vazio na própria camada web…ou então antes de setar suas propriedades dentro do POJO…

qnto ao seu código, acredito que seja melhor usar o .equals ao invés do == que voce usou…é mais garantido

e um outro conselho q eu daria ao seu código, é q vc nao precisa do else, pois se cair no if, o fluxo já será interrompido, então se vc tirar o else funcionará tb…

[]'sss!!!

Valdemar_Jr

Bem, acho que deveria ser assim mesmo, e onde esse método for chamado deverá ser tratada a exceção ou então lançar uma nova exceção. Alguém em algum momento deverá tratar essa exceção.

marcio0

leonickel:
marcio0,

Esse trecho de código q vc copiou está dentro de um POJO seu? Se tiver, acredito que talez não seja muito bom conter este tipo de “lógica” dentro dele

se for um sistema web, por exemplo, vc pode validar se o nome está vazio na própria camada web…ou então antes de setar suas propriedades dentro do POJO…

qnto ao seu código, acredito que seja melhor usar o .equals ao invés do == que voce usou…é mais garantido

e um outro conselho q eu daria ao seu código, é q vc nao precisa do else, pois se cair no if, o fluxo já será interrompido, então se vc tirar o else funcionará tb…

[]'sss!!!

É só um exercicio básico de criar uma classe agenda e depois criar o layout, com eventos e exceções. Isso aí é um trecho da classe agenda.
Valeu pela dica do else e do equals.
Eu queria fazer o tratamento no layout (mais especificamente, na parte em que ele cria um objeto agenda passando os atributos pelo construtor), se desse um erro, esse cadastro seria interrompido e a exceção tratada.

Valeu, é exatamente isso que quero fazer!

Marcio_Duran

marcio0:
Boa tarde galera
Estou fazendo uns exercícios aqui com tratamento de exceções, e quero saber se esse código que escrevi está certo:

public void setNome( String nome ) throws IllegalArgumentException { if ( nome == "" ) throw new IllegalArgumentException(); else this.nome = nome; }

A minha idéia é que esse set, no caso do nome vir em branco, vai passar um erro pra classe que o chamou (construtor), que irá passar para a classe que o chamou.
Isso está certo? A idéia é essa mesmo? Ou tenho que fazer o tratamento com try e catch ai mesmo?
Tenho que fazer o mesmo com o construtor? (throws …exception)?

Obrigadão a quem puder ajudar!

:wink: PISTA

Toda exceção é a instância de uma classe que possui a classe Exception em sua hierarquia de herança.Em outras palavras, as exceções são sempre alguma subclasse de java.lang.Exception.

IllegalArgumentExcepiton (Lançada quando um método recebe um argumento formatado de forma diferente do que se espera)

:idea: Isto é de modo Programaticamente não pelo JVM

tecnocrata

adicionando ao que o marcio duran disse , eh sempre bom dar uma revisada na tree das classe Exception e Throwable:
http://java.sun.com/javase/6/docs/api/index.html?java/lang/management/package-summary.html
http://java.sun.com/javase/6/docs/api/index.html?java/lang/management/package-summary.html

M

É recomendado deixar para o usuário de uma classe a responsabilidade de tratar uma exceção? Se ela for simples não é bom eu trata-la logo?

sergiotaborda

marcio0:
Boa tarde galera
Estou fazendo uns exercícios aqui com tratamento de exceções, e quero saber se esse código que escrevi está certo:

public void setNome( String nome ) throws IllegalArgumentException { if ( nome == "" ) throw new IllegalArgumentException(); else this.nome = nome; }

O lançamento da exceção está certo, mas o resto poderia ser melhor

public void setNome( String nome ) throws IllegalArgumentException {
		if ( "".equals(nome) ){
			throw new IllegalArgumentException();
		}

		this.nome = nome;
	}

Parece a mesma coisa mas não é.
As condições de exceção são testadas com if normal. Se tudo der certo o codigo continua normalmente. não precisa de else. O teste de igualdade é com equals e não com ==.
Como vc aceita null então tem que ser escrito daquela forma.

Criado 15 de junho de 2008
Ultima resposta 15 de jun. de 2008
Respostas 7
Participantes 7