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?