有没有办法在 Jersey 进行全局异常处理?而不是单个资源有try / catch块,然后调用一些方法然后清理所有要发送回客户端的异常,我希望有一种方法可以将它放在实际调用资源的地方 . 这甚至可能吗?如果是这样,怎么样?
而不是, sanitize(e)
会在Jersey servlet中抛出某种Jersey配置的异常:
@GET
public Object getStuff() {
try {
doStuff();
} catch (Exception e) {
ExceptionHandler.sanitize(e);
}
}
有:
@GET
public Object getStuff() throws Exception {
doStuff();
}
异常将被抛出到我可以拦截并从那里调用 sanitize(e)
的东西 .
这实际上只是为了简化所有 Jersey 资源,并保证回到客户端的异常总是以某种可理解的形式出现 .
2 回答
是 . 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
例: