Duvida sobre Exceptions no meu projeto

6 respostas
jsfjavaexception
Dayson_Rodrigues

comecei a criar um projeto do zero e estou com uma duvida e um problema referente ao Exception.

Possuo um formulário aonde tem 2 datas, e fiz uma verificação dessas datas na minha classe service, só que quando essa verificação não é válida, ela lança uma Exception só que essa Exception não aparace na minha View através do componente Mensages do primeface apenas no console.

meu codigo está assim

public void salvar() {
	try {
		this.servicoService.salvar(servico);
		Messages.addGlobalInfo("Serviço salvo com sucesso!");
		limpar();
	} catch (NegocioException e) {
		Messages.addGlobalError(e.getMessage());
		e.printStackTrace();
	} catch(DataException e){
		Messages.addGlobalError(e.getMessage());
		e.printStackTrace();
	}
}

Meu Service

@Inject
private ServicoDAO servicoDAO;

public void salvar(Servico servico) throws NegocioException, DataException {
	try {
		if (servico.getDiaServico().after(servico.getDiaGarantia())) {
			throw new DataException("A Data do serviço, não pode ser depois da garantia");
		}
		servicoDAO.salvar(servico);
	} catch (Exception e) {
		e.printStackTrace();
		throw new NegocioException("Não foi possível salvar o cliente!");
	}
}

6 Respostas

L

Você não está fazendo isso direito.

Luis_Augusto_Moggi

Tenta assim:

FacesMessage msg = new FacesMessage("Mensagem");
msg.setSeverity (FacesMessage.SEVERITY_INFO);
FacesContext.getCurrentInstance().addMessage(null, msg);
Dayson_Rodrigues

consegui, é boa pratica fazer dessa forma? posso criar uma classe static e diminuir esse codigo né? isso é boa prática?

No caso estou recuperando mensagem que eu quero através da verificação do meu if e apresenta uma outra mensagem como se estivesse salvo, Mais ele não salva. É alguma coisa que estou errando.

public void salvar(Servico servico) throws NegocioException, DataException {
	try {
		if (servico.getDiaServico().after(servico.getDiaGarantia())) {
			FacesUtil.addWarnMessage("A data do serviço, não pode ser maior do que a data da garantia.");
		}
			servicoDAO.salvar(servico);
	} catch (Exception e) {
		e.printStackTrace();
		throw new NegocioException("Não foi possível salvar o cliente!");
	}
}
Luis_Augusto_Moggi

No log não apresenta nada?
Se você colocou alguma validação no banco pode ser que esteja disparando uma outra exception, porque quando você disparava o DataException ele não executava o método salvar do ServicoDao, agora ele está executando mesmo que a data seja maior. Caso não aprensente teria que dar uma olhada no código da classe ServicoDao.
Eu costumo deixar a mensagem em um método estático mesmo, assim como você fez.

L

Sim, pode criar um singleton para isso ou um método estático.
Como está o DAO?

Dayson_Rodrigues
@Transactional
public void salvar(Servico servico) {
	manager.merge(servico);
}
Criado 30 de março de 2017
Ultima resposta 30 de mar. de 2017
Respostas 6
Participantes 3