Solon 开发进阶,五、全局异常订阅

所谓“全局异常”,是指通过事件总线发布的异常。目前框架会把未吃掉的异常发布到事件总线。比如:启动时产生的异常,或者计划任务未处理的异常,或请求中未处理的异常。

事件总线默认会用 "err.printStackTrace()" 自动打印。如果希望 禁掉 自动打印:

Solon.start(DemoApp.class, args, app->{
    app.enableErrorAutoprint(false);
});

或者对异常进行订阅,订阅后也会 禁掉 自动打印。

1、手动订阅

//获取系统未处理的异常
Solon.start(DemoApp.class, args, app->{
    app.onError(e->{
        //或者记录到日志系统,或者别的处理
        e.printStackTrace();
    }); 
});

或者用“SolonBuilder”,在启动前就进行订阅:

new SolonBuilder().onError(e -> {
    //或者记录到日志系统,或者别的处理
    e.printStackTrace();
}).start(DemoApp.class, args);

2、注解订阅

@Component
public class ErrorListener implements EventListener<Throwable> {
    @Override
    public void onEvent(Throwable e) {
        //或者记录到日志系统,或者别的处理
        e.printStackTrace();
    }
}

上面提到“全局异常”,也会包括请求产生的未处理异常。反之,被过滤器吃掉的异常,这里就不会出现了(可参考 《过滤器、处理、拦截器》 )。

建议请求类的异常交由过滤器处理。

posted @ 2022-01-16 19:16  带刺的坐椅  阅读(20)  评论(0编辑  收藏  举报