Como capturar a Exceção gerada pelo Session do Hibernate?

0 respostas
mateusviccari

Como todos devem saber, pode-se executar qualquer método da Session do hibernate sem usar try-catch, visto que os métodos não possuem throws.
Porém eu preciso capturar as excessões e caso algo der errado, mostrar a mensagem ao usuario e interromper o que está abaixo da linha aonde ocorreu o erro.
Tenho esse código que serve pra remover as linhas selecionadas de uma JTable:

Session sessao = ConnectDB.getInstance();
                try{
                    sessao.getTransaction().begin();
                    int[] linhasSelecionadas = tabelaBean.getSelectedRows();
                    //remover do banco
                    for(int i=linhasSelecionadas.length;i>0;i--){
                        Object objeto=tableModel.getObject(linhasSelecionadas[i-1]);
                        sessao.delete(objeto);
                    }
                    //remover da tabela
                    for(int i=linhasSelecionadas.length;i>0;i--){
                        tableModel.removeObject(linhasSelecionadas[i-1]);
                    }
                    sessao.getTransaction().commit();
                }catch(HibernateException e){
                    sessao.getTransaction().rollback();
                    JOptionPane.showMessageDialog(null, "O seguinte erro foi detectado ao excluir os itens selecionados:\n"
                            + e.getLocalizedMessage());
                }finally{
                    sessao.close();
                }

Porém mesmo quando ele entra no catch e me mostra a mensagem de erro, a stackTrace continua aparecendo no console…
Parece que não está entrando corretamente no catch, não entendi isso…
Mesmo usando uma excessão generica como Exception esse comportamento ainda acontece…
Como resolvo isso?

Criado 17 de maio de 2012
Respostas 0
Participantes 1