一尘不染

泽西岛的全局异常处理

java

有没有办法在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的所有资源,并保证返回给客户端的异常始终处于某种可以理解的形式。


阅读 176

收藏
2020-12-03

共1个答案

一尘不染

是。JAX-
RS具有ExceptionMappers的概念。您可以创建自己的ExceptionMapper接口,以将任何异常映射到响应。有关更多信息,请参见:https
:
//jersey.github.io/documentation/latest/representations.html#d0e6352

2020-12-03