泽西岛的全球exception处理

有没有办法在泽西岛进行全局exception处理? 而不是单独的资源有try / catch块,然后调用一些方法,然后清理所有的exception被发回给客户端,我希望有一种方法可以把这个资源实际上被调用的地方。 这甚至有可能吗? 如果是这样,怎么样?

而不是, sanitize(e)会在Jersey servlet中抛出某种Jerseyconfiguration的exception:

 @GET public Object getStuff() { try { doStuff(); } catch (Exception e) { ExceptionHandler.sanitize(e); } } 

有:

 @GET public Object getStuff() throws Exception { doStuff(); } 

那里的exception将被抛出一些我可以拦截并从那里调用sanitize(e)的东西。

这实际上只是为了简化泽西岛的所有资源,并保证返回给客户的例外总是以某种可以理解的forms出现。

是。 JAX-RS有一个ExceptionMappers的概念。 您可以创build自己的ExceptionMapper接口来将任何exception映射到响应。 欲了解更多信息,请参阅: https : //jersey.github.io/nonav/documentation/1.12/jax-rs.html#d4e435

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(); } }