Criando nova classe de exceção

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