RESTful 异常处理
1. Using WebApplicaitonException exceptions to report errors
???? JAX-RS提供了WebApplicationException,针对resource method创建异常,WebApplicationException包含一个
???? Reponse Object,该对象定义了返回给request的Entity Body, 如果没有Entity Body,该对象同时提供了一种机制
???? 用于指定HTTP Status Code.
???? (1) Setting the status code returned to the client
WebApplicationException(int status);WebApplicationException(java.lang.Throwable cause, int status);WebApplicationException(javax.ws.rs.core.Response.Status status);WebApplicationException(java.lang.Throwable cause, javax.ws.rs.core.Response.Status status);
???? (2) Providing an entity body
import javax.ws.rs.core.Response;import javax.ws.rs.WebApplicationException;import org.apache.cxf.jaxrs.impl.ResponseBuilderImpl;ResponseBuilderImpl builder = new ResponseBuilderImpl();builder.status(Response.Status.CONFLICT);builder.entity("The requested resource is conflicted.");Response response = builder.build();throw WebApplicationException(response);???? (3) Extending the generic exception
public class ConflicteddException extends WebApplicationException{public ConflictedException(String message){ResponseBuilderImpl builder = new ResponseBuilderImpl();builder.status(Response.Status.CONFLICT);builder.entity(message);super(builder.build());}}throw ConflictedException("The requested resource is conflicted.");2. Mapping exceptions to responses
??? (1) How exception mappers are selected
??? (2) Implementing an exception mapper
??? (3) Registering an exception mapper