有没有办法产生全球性的异常处理泽西? 而不是try / catch块,然后调用一些方法,然后进行消毒所有的异常将被发送回客户端个人资源,我希望有把这个地方的资源实际上是被称为一种方式。 这甚至可能吗? 如果是这样,怎么样?
相反的,其中sanitize(e)
将抛出某种新泽西配置例外球衣的servlet:
@GET
public Object getStuff() {
try {
doStuff();
} catch (Exception e) {
ExceptionHandler.sanitize(e);
}
}
有:
@GET
public Object getStuff() throws Exception {
doStuff();
}
其中的例外是抛出的东西,我可以拦截并调用sanitize(e)
从那里。
这真的只是为了简化所有泽西资源,并保证会返回给客户端的例外总是在某种可以理解的形式。
是。 JAX-RS具有ExceptionMappers的概念。 你可以创建自己的ExceptionMapper接口映射任何异常的响应。 欲了解更多信息请参阅: https://jersey.github.io/documentation/latest/representations.html#d0e6352
javax.ws.rs.ext.ExceptionMapper是你的朋友。
来源: https://jersey.java.net/documentation/latest/representations.html#d0e6665
例:
@Provider
public class EntityNotFoundMapper implements ExceptionMapper<javax.persistence.EntityNotFoundException> {
public Response toResponse(javax.persistence.EntityNotFoundException ex) {
return Response.status(404).
entity(ex.getMessage()).
type("text/plain").
build();
}
}