Pessoal,
Estou tendo problemas em resolver o seguite exercicio:
Eu tenho uma classe Contato + ou - assim:
public class Contato {
private String nome;
private long numero;
public Contato(String novoNome, long novoNumero)
{
nome = novoNome;
numero = novoNumero;
}
public void setNome(String novoNome)
{
nome = novoNome;
}
Preciso criar uma classe chamada ContatoException para tratar inconsistencias no dados de um contato, por exemplo se o usuário digitar uma String vazia ou espaços em branco etc…
Como eu faço isso?
1º A classe ContatoException deve extender Exception?
2º Eu queria que os testes ficassem na classe ContatoException e se o nome fosse válido o nome seria inserido.
1 - Sim
2 - Quem trata a regra é a propria classe a Exception é somente a mensagem a ser dispara com o erro que ocorreu
Os testes não ficam na classe de exceção, a classe de exceção, guarda informações que ajudam a debugar a exceção…
O melhor seria criar uma classe Consistences, com métodos estaticos de verificação… que lança exceções, especificas, por exemplo
Consistencies.notNull(Object value) {...} //testa c o value é nulo, se for lança uma IllegalArgumentException
Consistencies.sizeBeetwen(Charsequence value, int max, int min) {...} //testa o tamanho maximo/minimo de uma sequencia de caracters
e por ai vai …
vc pode criar Exceções mais especificas, pode ate criar realmente sua ContatoException, porem exceção de argumento illegal já existe, se for criar ContatoException o ideal é q faça uma
ContatoException extends IllegalArgumentException…
vc pode dar uma olhada nos artigos do Sergio
Edit.: alguns artigos
Mensagens de erro são feias mas não mentem (nem mordem) por Urubatan (esse ensina a ler uma exceção)
Exceções: Conceitos por Sergio Taborda.
Exceções: Boas Práticas, Más Práticas por Sergio Taborda.
Exceções: Classes Utilitárias por Sergio Taborda.
[quote=Lavieri]Os testes não ficam na classe de exceção, a classe de exceção, guarda informações que ajudam a debugar a exceção…
O melhor seria criar uma classe Consistences, com métodos estaticos de verificação… que lança exceções, especificas, por exemplo
Consistencies.notNull(Object value) {...} //testa c o value é nulo, se for lança uma IllegalArgumentException
Consistencies.sizeBeetwen(Charsequence value, int max, int min) {...} //testa o tamanho maximo/minimo de uma sequencia de caracters
e por ai vai …
vc pode criar Exceções mais especificas, pode ate criar realmente sua ContatoException, porem exceção de argumento illegal já existe, se for criar ContatoException o ideal é q faça uma
ContatoException extends IllegalArgumentException…
vc pode dar uma olhada nos artigos do Sergio
Edit.: alguns artigos
Mensagens de erro são feias mas não mentem (nem mordem) por Urubatan (esse ensina a ler uma exceção)
Exceções: Conceitos por Sergio Taborda.
Exceções: Boas Práticas, Más Práticas por Sergio Taborda.
Exceções: Classes Utilitárias por Sergio Taborda.
[/quote]
Opa, obrigado cara…inclusive ja tinha dado uma olhada nesses artigos,vou lê-los com mais atenção.
A classe ContatoException é obrigatoria neste exercicio.
Fiz extendendo IllegalArgumentException como vc falou e deu certo. Os testes deixei no metodo mesmo.
Valeu