Mapping exceptions to a response message using ExceptionMapper

You can use the javax.ws.rs.ext.ExceptionMapper class to map the checked or unchecked exceptions to the appropriate HTTP response content. At runtime, when an exception is thrown by a method, the JAX-RS runtime will scan through all registered exception mappers to find the best match for handling the exception. If there is no exact match found, runtime considers a mapper class that matches with the parent class of the checked exception class. After identifying the exception mapper class for handling an exception, the framework invokes the toResponse() method on the exception mapper instance to generate the appropriate HTTP response content for the exception.

Here is an example for the ExceptionMapper class, which creates the HTTP response for DepartmentNotFoundBusinessException:

import javax.ws.rs.core.Response; 
import javax.ws.rs.ext.ExceptionMapper; 
import javax.ws.rs.ext.Provider;  
 
@Provider  
public class DepartmentNotFoundExceptionMapper implements  
    ExceptionMapper<DeprtmentNotFoundBusinessException> { 
 
    // Map an exception to a Response 
    @Override 
    public Response toResponse(DeprtmentNotFoundBusinessException 
        exception) { 
        return Response.status( 
            Response.Status.NOT_FOUND). 
        entity(exception.getMessage()).build();  
    } 
 
} 

When the runtime fails to find an exception mapper for the custom exceptions, the exception will be propagated to the underlying container, which will eventually result in javax.servlet.ServletException, sending the HTTP 500 status back to the client.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.216.255.250