[VRaptor] Tratar exceções durante binding dos parametros de um Controller

8 respostas
Mikhas

Ahe galera!

Nos seters das minhas classes de negócio eu ja faço a validação de alguns campos e jogo exeções no caso de algum valor invalido.
Gostaria de sabe como posso capturar essas exeções e retornar para o formulario anterior no lugar de receber uma exception na tela (error 500).

Grato

8 Respostas

Lucas_Cavalcanti

anote as classes das suas exceções com @ValidationException, assim o VRaptor vai adicionar erros de validação ao invés de lançar as exceções

Mikhas

Funcionou!

Tem como eu pegar o erro de cada campo??? por exemplo errors[‘obj.campo’]

Lucas_Cavalcanti

isso, estará dentro do errors,

error.category vai ser o nome do parametro que vc tava tentando setar

error.message vai ser a mensagem da exception

[]'s

bglbruno

Galera, aproveitando o tópico, estou querendo fazer o mesmo. Não quero receber um Error 500 na tela.

Por exemplo, eu tenho um método add em um controller, e ao tentar adicionar por alguma razão que seja, é lançada uma exception AdicionarException.
Pra eu não receber o Error 500 na tela, eu devo anotar essa AdicionarException com @ValidationException? Pois eu anotei, mas não deu certo.

Devo tratar com try e catch mesmo?

Lucas_Cavalcanti

pro @ValidationException funcionar ele tem que ser lançado em algum dos setters dos caras que são recebidos no método do controller (preenchidos com parametros do request)

bglbruno

Entendi Lucas, é que no meu caso é diferente, não é um exception lançada por não passar na validação, e sim por algum outro motivo, erro de conexão, algo assim, entendeu?
Há alguma forma de não receber o erro 500 sem precisar tratar com try e catch no controller?

Lucas_Cavalcanti

ao invés de dar erro 500 vc quer fazer o que? erro de validação?

vc pode fazer um try…catch num interceptor e fazer o que vc quer…

só cuidado pq a exception pode estar encapsulada dentro de um InterceptionException

bglbruno

Tem razão, verdade cara, posso fazer um interceptor!
Vou testar aqui!

Obrigado!

Criado 30 de novembro de 2010
Ultima resposta 23 de mai. de 2012
Respostas 8
Participantes 3