15.7. Exception Handling
15.7.1. Create an Exception Mapper
Summary
Exception mappers are custom, application provided components that catch thrown exceptions and write specific HTTP responses.
Example 15.2. Exception Mapper
An exception mapper is a class that is annotated with the @Provider annotation, and implements the
ExceptionMapper
interface.
An example exception mapper is shown below.
@Provider public class EJBExceptionMapper implements ExceptionMapper<javax.ejb.EJBException> { Response toResponse(EJBException exception) { return Response.status(500).build(); } }
To register an exception mapper, list it in the
web.xml
file under the resteasy.providers
context-param, or register it programmatically through the ResteasyProviderFactory
class.
15.7.2. RESTEasy Internally Thrown Exceptions
Exception | HTTP Code | Description |
---|---|---|
BadRequestException | 400 | Bad Request. The request was not formatted correctly, or there was a problem processing the request input. |
UnauthorizedException | 401 | Unauthorized. Security exception thrown if you are using RESTEasy's annotation-based role-based security. |
InternalServerErrorException | 500 | Internal Server Error. |
MethodNotAllowedException | 405 | There is no JAX-RS method for the resource that can handle the invoked HTTP operation. |
NotAcceptableException | 406 | There is no JAX-RS method that can produce the media types listed in the Accept header. |
NotFoundException | 404 | There is no JAX-RS method that serves the request path/resource. |
ReaderException | 400 | All exceptions thrown from MessageBodyReaders are wrapped within this exception. If there is no ExceptionMapper for the wrapped exception, or if the exception is not a WebApplicationException , then RESTEasy will return a 400 code by default. |
WriterException | 500 | All exceptions thrown from MessageBodyWriters are wrapped within this exception. If there is no ExceptionMapper for the wrapped exception, or if the exception is not a WebApplicationException , then RESTEasy will return a 400 code by default. |
JAXBUnmarshalException | 400 | The JAXB providers (XML and Jettison) throw this exception on reads. They may be wrapping JAXBExceptions. This class extends ReaderException . |
JAXBMarshalException | 500 | The JAXB providers (XML and Jettison) throw this exception on writes. They may be wrapping JAXBExceptions. This class extends WriterException . |
ApplicationException | N/A | Wraps all exceptions thrown from application code. It functions in the same way as InvocationTargetException . If there is an ExceptionMapper for wrapped exception, then that is used to handle the request. |
Failure | N/A | Internal RESTEasy error. Not logged. |
LoggableFailure | N/A | Internal RESTEasy error. Logged. |
DefaultOptionsMethodException | N/A | If the user invokes HTTP OPTIONS and no JAX-RS method for it, RESTEasy provides a default behavior by throwing this exception. |