estou querendo capturar as exceções que podem acontecer quando estou fazendo alguma ação com o jpa…
mas acontece que só consigo capturar a exceção quando uso o Exception… gostaria de poder fazer alguma coisa mais filtrada…
acontece que uso Spring, e verifiquei que sempre (quando for relacionado ao bd.ex: duplicidade com a PK) o org.springframework.transaction.TransactionSystemException
que captura as exceções… e vi tb que ele é um RuntimeException, e pelo que li isso é uma exceção não verificada…
sendo assim, tenho como deixar mais preciso a minha exceção??
Cara, vc gerou tua camada com o Netbeans ou de outra forma?
alves.Felipe
uso o eclipse…
alves.Felipe
mais alguém?
alves.Felipe
?
Lavieri
toda excecao do JPA e' uma PersistenceException
as vezes, vc tera ela dentro de outra excecao, por questoes de camda...
o que vc pode fazer e'
try{
}catch(Exceptionex){
List<Exception> jaChecadas = new ArrayList<Exception>();Exceptionatual=ex;while(!jaChecadas.contains(atual)&&atual!=null){
if(atualinstanceofExcecaoQueVcQuerCapturar){
//fazotratamentoaquiquevcquerfazerbreak; //usa o break pra sair do loop}
jaChecadas.add(atual);atual=atual.getCause();}
throwex; //caso nao seja a excecao que vc quer, relanca ela
}
alves.Felipe
blz… eu ja estava fazendo alguma coisa parecida…
mas só para deixar bem claro…
esse tratamento que sera feito no catch, eu tenho que fazer isso no controller e não na minha persistencia, certo?
pois se eu coloco um try catch na minha persistencia, nao pega nada…
pega a exceção apenas onde eu chamo o método que quero, nesse caso o salvar…
me entende?
Lavieri
alves.Felipe:
blz… eu ja estava fazendo alguma coisa parecida…
mas só para deixar bem claro…
esse tratamento que sera feito no catch, eu tenho que fazer isso no controller e não na minha persistencia, certo?
pois se eu coloco um try catch na minha persistencia, nao pega nada…
pega a exceção apenas onde eu chamo o método que quero, nesse caso o salvar…
me entende?
o tratamento so pode fazer onde vc pode realmente trata-la…
não sei o q vc chama de sua persistencia, mas se for algo como um DAO
vc tem q realmente jogar a exceção pra cima… em um DAO não é o lugar correto de se tratar a exception.
normalmente a exceção só ocorre após um commit() se for um problema no banco, é só nessa hora que vc verá o problema ocorrer, isso para chaves duplicadas e outras coisas mais…
alves.Felipe
valeo cara…
era bem isso que eu tava querendo confirmar…
abraco