Como tratar exception

2 respostas
F

Olá pessoal, possuo o seguinte metodo.

public Funcionario buscaFuncionarioPorNome(String nome)
			throws FuncionarioNaoEncontradoException,
			FuncionarioNaoUnicoException {
		em.getTransaction().begin();

		Query jpaql = em.createQuery("from Funcionario f where f.nome = :x");
		jpaql.setParameter("x", nome);

		Funcionario result = null;
		try {
			result = (Funcionario) jpaql.getSingleResult();
		} catch (NoResultException e) {
			throw new FuncionarioNaoEncontradoException();
		} catch (NonUniqueResultException e) {
			throw new FuncionarioNaoUnicoException();
		}

		em.getTransaction().commit();

		return result;
	}

Nesse metodo lanço a seguinte excessão, FuncionarioNaoUnicoException(). Não estou sabendo como implementar quando cair nessa excessão. O que eu desejo fazer é q quando eu buscar pelo primeiro nome por exemplo, caso exista duas pessoas com o mesmo nome, exiba para o usuário o nome das duas pessoas e o usuario escolhe a pessoa desejada.

Caso alguém possa me dar um exemplo eu agradeço, obrigada!

2 Respostas

robinsonbsilva

Jovem,

No seu caso acredito que ao encontrar dois ou mais nomes que iniciam com a condição especificada ele sempre retornará o 1º encontrado.

Caso exista a possibilidade de retornar mais de uma , vc tera que mudar seu método:

public ArrayList <Funcionario> buscaFuncionarioPorNome(String nome)  
throws FuncionarioNaoEncontradoException,  
         FuncionarioNaoUnicoException {
Fox_McCloud

robinsonbsilva:
Jovem,

No seu caso acredito que ao encontrar dois ou mais nomes que iniciam com a condição especificada ele sempre retornará o 1º encontrado.

Caso exista a possibilidade de retornar mais de uma , vc tera que mudar seu método:

public ArrayList <Funcionario> buscaFuncionarioPorNome(String nome) throws FuncionarioNaoEncontradoException, FuncionarioNaoUnicoException {


Isso, retorne sempre um List. Depois é lógica, se o funcionário for encontrado, é adicionado na lista e a mesma é devolvida, se cair no FuncionarioNaoUnicoException, capture a exceção, carregue a lista com todos os funcionários encontrados e devolva a lista.

O método chamador é que vai verificar, se a lista tiver somente um funcionário, abre direto, se tiver mais de um, mostra uma lista pro usuário decidir qual quer abrir.

Só uma pergunta: vocês realmente são incapazes de assimilar como escrever exceÇão corretamente, gostam mesmo de escrever errado ou fazem isso só pra me irritar?

Pq não é possível que você nunca tenha lido um livro a respeito de tratamento de exceções, com a palavre grafada corretamente no mesmo… ou então leu e não prestou atenção…

Nos dois casos isso pode explicar por que você não está sabendo resolver o problema, k k k k k!

:lol:

Criado 16 de julho de 2008
Ultima resposta 16 de jul. de 2008
Respostas 2
Participantes 3