Aleksandr Kravets
Aleksandr Kravets

Reputation: 5947

JAX-RS exception handling

I'm relatively new to REST services in Java. I've created one and everything works fine except error handling. If I make a request with incorrectly formed JSON in it, Jackson JSON processor throws an exception which I unable to catch and I get error 500 in client. Exception follows:

javax.ws.rs.InternalServerErrorException: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.HashSet out of VALUE_STRING token

I have no idea how to handle exceptions raised outside my code. Google suggests using Exception Mappers or Phase Inteceptors. Though I could miss something in search results. What is the proper way to handle such situations? Please, advise something. I'm stuck with this problem...

Upvotes: 6

Views: 4402

Answers (1)

TheArchitect
TheArchitect

Reputation: 2173

A JAX-RS ExceptionMapper should do the job. Just add a class like below to your code and if you have the exception type right, then you should get the hook to customize the handling.

@Provider
public class MyExceptionMapper implements ExceptionMapper<MyException> {

    @Override
    public Response toResponse(MyException ex) {
        return Response.status(Response.Status.BAD_REQUEST).build();
    }

}

Upvotes: 5

Related Questions