泽西岛的全球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(); } }