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

事件总线默认会用 "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();
}
}

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

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

Solon 开发进阶,五、全局异常订阅的更多相关文章

  1. Solon 开发,五、切面与环绕拦截

    Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...

  2. 网站开发进阶(八)tomcat异常日志分析及处理

    tomcat异常日志分析及处理 日志信息如下: 2015-10-29 18:39:49 org.apache.coyote.http11.Http11Protocol pause 信息: Pausin ...

  3. Spring-MVC开发之全局异常捕获全面解读

    异常,异常 我们一定要捕获一切该死的异常,宁可错杀一千也不能放过一个! 产品上线后的异常更要命,一定要屏蔽错误内容,以免暴露敏感信息! 在用Spring MVC开发WEB应用时捕获全局异常的方法基本有 ...

  4. 从壹开始前后端分离 [.netCore 不定期更新 ] 三十五║ 完美实现全局异常日志记录

    缘起 哈喽我是不定期更新的日常,昨天群里小伙伴问到了记录日志,当然,以前我也挖过这个坑,后来一直没有来得及填上,也想着 swagger 一直又有错误信息展示的功能,就迟迟没有添加这个功能,不过昨天夜里 ...

  5. SpringBoot系列五:SpringBoot错误处理(数据验证、处理错误页、全局异常)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念: SpringBoot 错误处理 2.具体内容 在之前的程序里面如果一旦出现了错误之后就会出现一堆的大白板,这个白板会 ...

  6. (入门SpringBoot)SpringBoot配置全局异常(五)

    Spring的全局异常,用于捕获程序员没有捕获的异常.具体请看下面代码: 1.ControllerAdvice拦截异常,统一处理.通过Spring的AOP来管理. @ControllerAdvicep ...

  7. Android全局异常捕获

    PS:本文摘抄自<Android高级进阶>,仅供学习使用 Java API提供了一个全局异常捕获处理器,Android引用在Java层捕获Crash依赖的就是Thread.Uncaught ...

  8. 4-MySQL DBA笔记-开发进阶

    第4章 开发进阶 本章将介绍一些重中之重的数据库开发知识.在数据库表设计中,范式设计是非常重要的基础理论,因此本章把它放在最前面进行讲解,而这其中又会涉及另一个重要的概念——反范式设计.接下来会讲述M ...

  9. Solon 开发,二、注入或手动获取Bean

    Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...

  10. Solon 开发,三、构建一个Bean的三种方式

    Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...

随机推荐

  1. go语言写http踩得坑

    1.在运行http时,报错:panic: listen tcp: address xxxx: missing port in address, 初始 代码如下 func HelloWordHander ...

  2. AtCoder Beginner Contest 328 (ABC328)

    A. Not Too Hard 模拟. Code B. 11/11 模拟. Code C. Consecutive Description 给你一个字符串 \(S\),有 \(Q\) 次询问,每次输入 ...

  3. 飞码LowCode前端技术系列:如何便捷快速验证实现投产及飞码探索

    本篇文章从数据中心,事件中心如何协议工作.不依赖环境对vue2.x.vue3.x都可以支持.投产页面问题定位三个方面进行分析. 一.数据中心,事件中心设计 飞码是数据驱动+事件驱动的产品,考虑到飞码运 ...

  4. 栈与队列应用:逆波兰计算器(逆波兰表达式;后缀表达式)把运算符放到运算量后边 && 中缀表达式转化为后缀表达式

    1 //1.实现对逆波兰输入的表达式进行计算如(2-1)*(2+3)= 5 就输入2 1 - 2 3 + * //先把2 1 压栈 遇到-弹栈 再把2 3压进去 遇到+弹栈 最后遇到*弹栈 2 //2 ...

  5. 毕业论文精选:基于Qt的高考志愿系统填报查询的设计与实现

    基于Qt的高考志愿系统填报查询的设计与实现 摘     要 在当今社会教育的迅速发展下,高考人数的规模和增长速度也是空前的.高考已经变成了家长和社会高度关注的事情,但是高考只是一个开始,高考结束后的志 ...

  6. CART算法解密:从原理到Python实现

    本文深入探讨了CART(分类与回归树)算法的核心原理.实现方法以及应用场景.文章首先介绍了决策树的基础知识,然后详细解析了CART算法的工作机制,包括特征选择和树的构建.接着,通过Python和PyT ...

  7. 30. 干货系列从零用Rust编写正反向代理,HTTP的组装之旅(中间件)

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代 ...

  8. Spring配置文件的魔法炼金术:如何制造容器化时代的完美配方

    前言 基于现代服务的云原生十二要素理论,我们在采用容器化部署时,要保证同一个镜像可以满足不同环境的部署要求,而不是不同环境打包不同的镜像.本文档主要介绍一种基于spring框架的满足不同环境配置的编译 ...

  9. json数组根据某属性去重

    数据: let arry = [ {name: "张三", age: 23, work: '计算机'}, {name: "王五", age: 29, work: ...

  10. 快速认识,后端王者语言:Java

    Java作为最热门的开发语言之一,长居各类排行榜的前三.所以,就算你目前不是用Java开发,你应该了解Java语言的特点,能用来做什么,以备不时之需. Java 是一种高级.多范式编程语言,以其编译为 ...