Pegar exception de trigger [RESOLVIDO]

2 respostas
santoro

Pessoal bom dia, é o seguinte, estou fazendo um teste gerando um erro de insert na trigger (de propósito), o objetivo é pegar a mensagem de erro retornado pela trigger, porém não estou conseguindo passar esta mensagem para frente, quando faço o insert eu consigo capturar a mensagem normalmente

public void salvar(T entidade) throws MinhaException {
	try {
		em.persist(entidade);
		em.flush();
	} catch (Exception e) {
		System.out.println("###################Exception" + e.getMessage()); // aqui pega a mensagem da trigger normalmente
		throw new MinhaException(e.getMessage());
	}
}

Neste ponto eu tenho a mensagem perfeita da maneira que eu gerei na trigger, mas quando vou no método do ManagedBean (que chama o salvar) ele entra no catch da Exception (e não da MinhaException) e em vez da mensagem original é retornado um “Transaction rolled back”

public void salvar() {
	try {
		ejb.salvar(this.getEntidade());
	} catch (MinhaException e) {
		System.out.println("MINHAEXCEPTION");
		System.out.println(e.getMessage());
	} catch (Exception ex) {
		System.out.println("EXCEPTION");
		System.out.println(ex.getMessage()); // entra nesta exception com a mensagem Transaction rolled back e não na MinhaException
	} 
}

como eu poderia capturar a mensagem original de erro?

2 Respostas

santoro

Pessoal para quem precisar consegui resolver este problema anotando MinhaException com

Quem tiver outra solução por favor poste aqui.

Hebert_Coelho

santoro:
Pessoal para quem precisar consegui resolver este problema anotando MinhaException com

Quem tiver outra solução por favor poste aqui.

Para seu cliente capturar a exception corretamente você terá que declará-la como ApplicationException mesmo.

Caso você não a declare desse modo, o EJB irá jogar um EJBException e dentro dela, a sua exception.

Apenas tome cuidado com o rollback=true pois qualquer ação feita será desfeita.

Criado 21 de novembro de 2011
Ultima resposta 21 de nov. de 2011
Respostas 2
Participantes 2