Pegar exception gerada pelo hibernate/Spring na persistência

1 resposta
diegocalazans

Boa tarde usuários do fórum, estou com um problema, e talvez algum de vocês já tenha passado pela mesma coisa. O problema é que não consigo capturar a exception lançada pelo hibernate/spring quando faço alguma manipulação no banco de dados e o banco se encontra indisponível, mesmo colocando o try/catch não consigo capturar a exception para relança-la ou fazer um tratamento especial, em vez disso o hibernate ou spring já a escreve no log, mas não consigo pega-la.

Já vi aqui mesmo no fórum alguns posts relacionados, na própria documentação do spring mas não obtive sucesso, já tentei utilizar AOP com spring para tentar capturar mas nada. Deve haver no hibernate ou no spring algum interceptor que encapsule estas exceptions pois no próprio framework ele consegue loga-las mas não as relança.

Se alguém tive uma idéia de como tratar isso…

Estou utilizando Spring 2.5.6, JPA/Hibernate 3.

Desde já agradeço.

1 Resposta

diegocalazans

Olá pessoal, consegui resolver este problema, segue abaixo a solução que encontrei (AOP), caso alguém precise ou passe pelo mesmo… Com isto consegui pega-la, relança-la e captura-la na view.

/**
 * @author Calazans
 * */
package br.*.*.*.infra.aop;

import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

import br.*.*.*.exception.SCAExeption;

@Aspect
@Component
public class ErrorManagerAspect {

	@AfterThrowing(pointcut = "execution(* repository.*.*(..))", throwing = "e")
	public void checkError(Throwable e) {
		throw new SCAExeption(e);
	}
}
Criado 30 de abril de 2010
Ultima resposta 2 de mai. de 2010
Respostas 1
Participantes 1