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

猜你喜欢

转载自springsfeng.iteye.com/blog/1608842