博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
系统中异常公共处理模块 in spring boot
阅读量:6450 次
发布时间:2019-06-23

本文共 1053 字,大约阅读时间需要 3 分钟。

最近在用spring boot 做微服务,所以对于异常信息的 【友好展示】有要求,我设计了两点:

一、 在业务逻辑代码中,异常的抛出 我做了限定,一般只会是三种:           

1
2
3
1
. OmcException                        
//自己写的异常包装类 ,主要用来处理业务异常
2
. IllegalArgumentException            
//参数异常类,其实这个可以不要,只是在我的系统中,我想把参数异常和业务异常做区分
3
. 其他的异常,都按Exception抛            
//因为它的抽象层次最高,所以在系统中按优先级最低进行处理,除非必要(如容器级错误)否则尽量避免

    OmcException的构造是这样的:

  

 

这里留个钩子:

为什么要在抛异常时,带上 日志的信息 + 输入参数的信息?

       —— 因为,我希望在业务逻辑代码中,对于这些异常的处理,最好就是一行代码,类似于:打印error日志 + 向用户返回友好的错误信息。我想做一个公共的处理模块。让业务逻辑代码尽可能的清爽一些。

 

对异常的进行try-catch包装的过程是:

    

对异常的抛出做限定,给个总结就是:尽量包装成我们自己封装的异常包装类。

    为什么呢? 这是在设计上做限定,那么后进的程序员,如果不按照这个规范走,功能是做不出来的。这个也是架构设计的意义,不要随便动个嘴就好,还要把栅栏建好。

 

二、 在公共的业务逻辑处理代码中,异常的接收(或者说异常的路由) 我做了限定,一般是:

1. 先匹配业务异常。业务异常一般向用户提示什么呢? 错误编码 + 错误提示信息。

2. 其次,匹配参数异常,这些参数异常可能是我们自己做参数校验抛出来的,也有可能是spring mvc 抛出来的,所以还没有到我们的业务逻辑代码中。

  参数异常一般提示什么呢? 错误提示信息(包含哪个字段出现了错误)

3. 根异常Exception,这里捕获的异常,可能是我们不愿意处理的 数据库异常,也有可能是容器报的异常(当然,这些异常我们并不能捕获所有的。)这里要做打error日志的处理。

  一个设计良好的系统,最好是不要走进这个分支,毕竟分析error日志不是一件多么光荣的事儿。

spring boot中,公共异常处理模块代码结构是:

 

然后是,打印error日志 + 向用户返回友好的错误信息

 本文转自二郎三郎博客园博客,原文链接:http://www.cnblogs.com/haore147/p/6088829.html,如需转载请自行联系原作者

你可能感兴趣的文章
使用docker的mysql镜像
查看>>
学习整套基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构
查看>>
ActiveMQ学习-Network connectors
查看>>
PHPCMS访问首页想到的问题
查看>>
简要理解锁、同步器之间的关系
查看>>
Webpack自动化构建实践指南
查看>>
建立虚拟wifi热点共享上网
查看>>
学会如何使用移动用户反馈系统,让你玩转APP
查看>>
PHP完全自学手册(文档教程)
查看>>
linux环境通过ssh连接控制台显示中文乱码问题
查看>>
列表增删改查
查看>>
JAVA语言基础-面向对象(代码块)
查看>>
前端加密JS库--CryptoJS 使用指南
查看>>
闪屏页设置
查看>>
12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件不记录日志和过期时间
查看>>
一个程序猿如何自学双截棍,避免各种编程职业病的发生?
查看>>
Mybatis常见面试题
查看>>
Postman接口测试神器从安装到精通
查看>>
第八届华南会领导层召开集思会
查看>>
fabric-explorer 关于切换到TLS模式的升级
查看>>