Olá, andei lendo alguns artigos no google sobre tratamento de exceções entendi alguns conseitos mais não entendi outras coisas estou estudando isso e me deparei com alguns problemas. Ex: Estou usando JPA/Hibernate gostaria de saber como faço pra recuperar por exemplo uma tentativa de duplicidade de registros em um campo unico e retornar uma mensagem amigavel para o usuario? Outro problema é o seguinte:
//Classe Bairro.java
.
.
.
//metodo salvar
public void Salvar() {
try {
super.Salvar();
//pojo persistente
beanBairro = new Bairro();
beanBairro.setBaiDescricao(jtfBairro.getText());
//metodo static da classe Conexao
Conexao.Salvar(beanBairro);
} catch (Exception ex) {
Logger.getLogger(FrmBairro.class.getName()).log(Level.SEVERE, null, ex);
}
}
//Classe Conexao
.
.
.
// metodo responsavel por receber o pojo e persistir no banco
public static void Salvar(Object objeto) throws Exception {
EntityManager manager = null;
try {
manager = Conexao.getConexao();
manager.getTransaction().begin();
manager.persist(objeto);
manager.getTransaction().commit();
JOptionPane.showMessageDialog(null, "Salvo com sucesso", "", JOptionPane.PLAIN_MESSAGE);
} catch (EntityExistsException eee) {
JOptionPane.showMessageDialog(null, "Tentativa de duplicidade de registros, operação não realizada \n" + eee.getMessage(), "Erro exception number 1 - EntityExistsException", JOptionPane.ERROR_MESSAGE);
manager.getTransaction().rollback();
} catch (IllegalStateException ise) {
JOptionPane.showMessageDialog(null, "operação não realizada \n" + ise.getMessage(), "Erro exception number 2 - IllegalStateException", JOptionPane.ERROR_MESSAGE);
manager.getTransaction().rollback();
} catch (IllegalArgumentException iae) {
JOptionPane.showMessageDialog(null, "operação não realizada \n" + iae.getMessage(), "Erro exception number 3 - IllegalArgumentException", JOptionPane.ERROR_MESSAGE);
manager.getTransaction().rollback();
} catch (TransactionRequiredException tre) {
JOptionPane.showMessageDialog(null, "operação não realizada \n" + tre.getMessage(), "Erro exception number 4 - TransactionRequiredException", JOptionPane.ERROR_MESSAGE);
manager.getTransaction().rollback();
}
}
A duvida é a seguinte segundo a documentação do JPA essas são as 4 exceções que podem ser lançadas em uma inserção de dados porem quando ocorre uma exceção o bloco catch que é acionado é o do metodo salvar da classe bairro, e de nenhuma forma consegui capturar o que realmente aconteceu. Gostaria de padronizar minhas exceções alguem pode me ajudar?
Grato!