Colecao de negocio

Esse método meu nunca lança a minha exceção quando não encontra o meu registro no banco de dados
ele sempre dá NULLPOINTEXCEPTION eu sei q isso ocorre pq o meu objeto retornado tá sendo nulo
quando ele não encontra nada então como posso resolver.

[code]
public Instituicao consultarInstituicao(String Identificador) {

	Instituicao instituicao = new Instituicao();

	try {

		instituicao = r.consultarInstituicao(Identificador);

	} catch (InstituicaoInexistenteException e) {

		System.out.println("Instituição não registrada");
	}

	return instituicao;
}[/code]

Só não retornar null no método que você busca no banco, retorne new NomeDoObjeto e trate de acordo com sua necessidade.

Pessoal preciso de um exemplo não consigo visualizar como resolver o problema agradeço…

[quote=vinkello]Esse método meu nunca lança a minha exceção quando não encontra o meu registro no banco de dados
ele sempre dá NULLPOINTEXCEPTION eu sei q isso ocorre pq o meu objeto retornado tá sendo nulo
quando ele não encontra nada então como posso resolver.

[code]
public Instituicao consultarInstituicao(String Identificador) {

	Instituicao instituicao = new Instituicao();

	try {

		instituicao = r.consultarInstituicao(Identificador);

	} catch (InstituicaoInexistenteException e) {

		System.out.println("Instituição não registrada");
	}

	return instituicao;
}[/code]

[/quote]

Tenta acessar alguma coisa do teu objeto instituicao logo após realizar a consulta dentro desse método.

quem é esse r :?:

Se os objetos existirem no banco ele retorna pessoal tudo q eu pedi. O problema é quando o objeto não existe no banco
ao invés dele lançar minha exceção eu só consigo lançar null ou nullpoint e o que eu quero é que ele lance a minha mensagem.

No método consultarInstituicao, se o registro não existir, ao invés de retornar null, lance a exceção. Como o código abaixo:

throw new InstituicaoInexistenteException ();

Mais dessa forma eu não estou tratando a exceção to jogando ela pra cima pra ser tratada em uma camada acima
e o que eu quero é trartar a exceção com try e catch.

Fiooo tá certo isso, olha só

consultarInstituicao(int codigo){
   try{
       //Instancia sua classe controladora que contém a regra de negócio, ou seja chama o método que conecta no banco e faz o select

   }catch(InstituicaoInexistenteException  e){
        System.out.println(e.getMessage());
    }
}

[]'s

Amigo,
Da forma que eu falei você estaria tratando a exceção corretamente sim.

O método r.consultarInstituicao seria o responsável por identificar que não existe o registro e lançaria a exceção, para que o método consultarInstituicao pegasse e tratasse a exceção.

Mas dessa forma amigo toda vez q eu for chamar o método consultar eu tenho q colocar uma claúsla try catch pra resolver o problema.

Meu teste.

public class Teste1 {

	public static void main(String[] args) {

		Instituicao i = new Instituicao();

		ColecaoInstituicao co = new ColecaoInstituicao();

		i=co.consultarInstituicao("EMFT");
		
		System.out.println(i.getNome());
		
	}

}

Pelo que eu entendi você possui duas classes que possuem o método chamado consultarInstituicao. Certo?
Você realiza a consulta utilizando o método da classe ColecaoInstituicao, e este chama o consultarInstituicao da outra classe (instância r do seu exemplo).
Se eu entendi bem o que você quer, poderia ficar assim:

[code]public class ColecaoInstituicao {
private IRepositorioInstituicao r = new RepositorioInstituicao();
public Instituicao consultarInstituicao(String Identificador) {

    try {  

        return r.consultarInstituicao(Identificador);  

    } catch (InstituicaoInexistenteException e) {  
        System.out.println("Instituição não registrada");  
    }  

    return null;  
}

}[/code]

[code]public class RepositorioInstituicao implements IRepositorioInstituicao {
public Instituicao consultarInstituicao(String Identificador) throws InstituicaoInexistenteException {
// Busca a Instituicao, se não achar lança a exceção como abaixo
throw new InstituicaoInexistenteException();

    // Se achar retorna-a
}

}[/code]

[code]public class Teste1 {

public static void main(String[] args) {   
    ColecaoInstituicao co = new ColecaoInstituicao();  

    Instituicao i = co.consultarInstituicao("EMFT");  
    
    if ( i != null ) // Se retornar null eu sei que a Instituicao não foi achada
        System.out.println(i.getNome());  
      
}  

} [/code]

blz essa instancia de outra classe que estou chamando na verdade é uma interface chamada

IrepositorioInstituicao r = new RepositorioInstituicao() que implementa a minha interface.

Blz, editei o post com os nomes das classes corretas.
Bem, acho que a solução que eu dei resolve. Ou não?

[quote=vinkello]Mais dessa forma eu não estou tratando a exceção to jogando ela pra cima pra ser tratada em uma camada acima
e o que eu quero é trartar a exceção com try e catch.[/quote]

Naturalmente voce vai ter que joga-la pra cima se quer captura-la em um metodo chamador, como é o caso. Voce joga pra cima no metodo consultarInstituicao e captura no seu main.

Agora se voce nao quiser tratar toda vez que chama esse metodo, que é o que esta parecendo, voce pode fazer o seguinte:

Em vez de ter aquele catch(InstituicaoInexistenteException e) voce ter um catch(NullPointerException e).

Agora eu te adianto logo que isso vai resolver o teu problema, mas nao é uma boa pratica, pois se voce sabe que o teu metodo PODE lançar uma exceçao desse tipo, o mais adequado é fazer como o pessoal falou, de fazer um throw. Assim qualquer metodo que chama-lo vai ser obrigado a tratar a exceção.