您可以映射此异常。为什么不?你有错误吗?
此代码应该做的工作
@Provider
public class EJBExceptionMapper implements ExceptionMapper<org.jboss.resteasy.spi.UnsupportedMediaTypeException>{
Response toResponse(org.jboss.resteasy.spi.UnsupportedMediaTypeException exception) {
return Response.status(415).build();
}
}
不要忘了申报在Spring配置文件提供者。
如果你希望提供给客户更多的信息,创建一流
@XmlRootElement
public class Error{
private String message;
//getter and setter for message field
}
,然后你可以
@Provider
public class EJBExceptionMapper implements ExceptionMapper<org.jboss.resteasy.spi.UnsupportedMediaTypeException>{
Response toResponse(org.jboss.resteasy.spi.UnsupportedMediaTypeException exception) {
Error error = new Error();
error.setMessage("Whatever message you want to send to user");
return Response.entity(error).status(415).build();
}
}
如果你不想使用错误的实体简单地传递一个字符串Response.entity()
呼叫。
如果你想赶上无论是在你的应用程序抛出创建通用的异常映射:
@Provider
public class ThrowableMapper implements ExceptionMapper<Throwable> {
public Response toResponse(Throwable t) {
ErrorDTO errorDTO = new ErrorDTO(code);
return Response.status(500).build();
}
}
我发现,如果异常的,即如果我作为一个开发者选择抛出的异常,业务逻辑抛出映射器的作品。但是,如果在内部抛出相同的异常,如果@Consumes注释未能验证内容类型,则不会调用映射器。 – Mustafa 2012-05-08 04:44:48
尝试为Throwable类创建异常映射器(请参阅更新的答案) – 2012-05-08 07:37:54