public String enregistrerMouvement() {
    if (typeMouvement.equals("ajout")) {
      gestionnaireCompte.deposer(compte, montant);
    } else {
      gestionnaireCompte.retirer(compte, montant);
    }
    try {
      gestionnaireCompte.update(compte);
      Util.addFlashInfoMessage("Mouvement enregistré sur compte de " + compte.getNom());
      return "listeComptes?faces-redirect=true";
    } catch (EJBException ex) {
      Throwable cause = ex.getCause();
      if (cause != null) {
        if (cause instanceof OptimisticLockException) {
          Util.messageErreur("Le compte de " + compte.getNom()
                  + " a été modifié ou supprimé par un autre utilisateur !");
        } else { // ou bien afficher le message de ex...
          Util.messageErreur(cause.getMessage());
        }
      } else {
        Util.messageErreur(ex.getMessage());
      }
      return null; // pour rester sur la page
    }
  }

Si votre code appelle la méthode merge dans les méthodes deposer et retirer de l'EJB, vous encadrez le if du début dans le try.