1
resposta

Como tratar exceções na "interpretação do json" do jax-rs? (aula 4)

Se eu tenho uma API, e o cliente da API envia o JSON com um formato incorreto, o JAX-RS joga uma exceção (JsonbException). Segue abaixo um exemplo de um json inválido para enviar no nosso POST (falta uma vírgula depois do endereço de e-maol):

{
    "agendado": false,
    "assunto": " alura teste 2",
    "email": "blablablas@gmail.com"
    "mensagem": " segundo teste de envio de email projeto jakartaee"
}

A mensagem retornada:

javax.ws.rs.ProcessingException: RESTEASY008200: JSON Binding deserialization error: javax.json.bind.JsonbException:
Internal error: Invalid token=STRING at (line no=5, column no=14, offset=111). Expected tokens are: [COMMA]

Mas isso não é o ideal. Em uma situação real seria interessante ter uma mensagem tratada e talvez até gravar algum log. E como o erro vem em texto puro, poderia até "quebrar" um client que espera uma resposta json. No caso do servlet, o comando responsável por converter a string em um objeto json poderia estar envolvido em um try-catch, e dentro do catch seria feito o tratamento. Minha dúvida é: como eu "capturo" essa exceção para fazer um tratamento com ela no caso do JAX-RS?

1 resposta

Lucas, boa tarde. Uma maneira é usando interceptors. Dê uma olhada nesse artigo e veja se faz sentido para o caso que você está falando acima: https://www.devmedia.com.br/trabalhando-com-o-design-pattern-interceptor-no-java-ee/32842