[RESOLVIDO]Tratamento de exception

Boa tarde, pessoal

Na tela de cadastro de usuários quando um user é adicionado com sucesso ou da erro ele gera a mesma mensagem “User adicionado com sucesso”, porém na log do glasshfish da o erro de SQL
Então acaba que se alguem for adicionar e errar em algum campo, nao vai aparecer que deu erro…somente que foi adicionado…quando na verdade nao foi né…pois gerou SQL exception

Como posso jogar a mensagem de erro neste FacesContext ?

DAO

 public void inserir(Changes changes) {
        try {
            session = HibernateUtil.getSession();
            session.beginTransaction();
            session.save(changes);
            session.getTransaction().commit();
        } catch (Exception e){
            System.out.println("Erro ao inserir: "+e.getMessage());
            session.getTransaction().rollback();
        } finally {
            session.close(); 
        }
    }

BEAN

public void inserir(){
        try {
            ChangesDao changesDao = new ChangesDaoImpl();
            changesDao.inserir(change);
            FacesContext context = FacesContext.getCurrentInstance();            
            context.addMessage(null, new FacesMessage("User successfully added."));
            change = new Changes();
        } catch (Exception e) {
            System.out.println("Erro ao inserir : "+e.getMessage());
        }
    }

desse mesmo jeito só que dentro do catch do try assim:

try{
...
}catch(Exception e){
FacesContext context = FacesContext.getCurrentInstance();            
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Inserindo", e.getMessage()));
}

e no seu DAO invés de tratar lá vc lança a exception assim

public void inserir(Changes changes) throws Exception {
        try {
            session = HibernateUtil.getSession();
            session.beginTransaction();
            session.save(changes);
            session.getTransaction().commit();
        } finally {
            session.close(); 
        }
    }
1 curtida