ExceptionHandler VRaptor 4

21 views
Skip to first unread message

Alefh Sousa

unread,
Jun 29, 2016, 11:37:04 PM6/29/16
to caelum-vraptor
Pessoal, 

Estou fazendo um sistema REST utilizando o VRaptor4 e necessito retornar algumas mensagens de erro com o json formatado, sei que é possível fazer isso utilizando o Results.json(), mas teria que ser logo apenas um try/catch para conseguir saber a Exception/Mensagem e acredito que isso fica muito acoplado e feio.

Como tenho mais conhecimento em Spring, sei que consigo realizar isso da seguinte maneira:

@ExceptionHandler(NomeException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public <T> ResponseEntity<T> handleCustomException(NomeException ex) {
return new ResponseEntity<T> ((T)ex.getMessage(),HttpStatus.INTERNAL_SERVER_ERROR);
}

Eu consigo fazer algo parecido com o VRaptor?

Obrigado,



Ivo Sestren Junior

unread,
Jun 30, 2016, 10:35:56 AM6/30/16
to caelum-...@googlegroups.com
Sim, é possivel.

Eu utilizo o Validator do VRaptor.

E no validator, criei um método chamado onErrorRender.
Onde faz o processo de gerar o json com os erros.
Caso não tenha erro, nada faz.

@Specializes
public class ValidatorResult extends DefaultValidator {

public ValidatorResult onErrorRender() {
this.onErrorUse(Results.json()).from(this.getErrors(), "errors").serialize();
return this;
}

}
E utilizo assim...

try {
...
} catch (Exception e) {
validator.add(new SimpleMessage("Exception", e.getMessage()));
}
validator.onErrorRender();

Caso tenha erro, vai fazer a geração do json com os erros e retornar o mesmos.
Caso não tenha erro, o processo continuará para a próxima instrução.



--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/caelum-vraptor.
Para mais opções, acesse https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages