![3d137439a58ffd93b86bf273dc362fd0.png](https://i-blog.csdnimg.cn/blog_migrate/fdf76bbd70b266421dcaae77fc86b1bf.jpeg)
![dd2c2aa32bd05fe718293163a5be8c33.png](https://i-blog.csdnimg.cn/blog_migrate/e1a59a22dcbae0c702c943a7085d52b0.jpeg)
背景
日常开发中经常会遇到各种系统异常(Exception),但是将异常堆栈直接返回给页面却是很不友好的一种做法,于是在我们日常的项目开发中,个人思考总结了一种自认为还不错的全局异常处理方案义工参考,欢迎指点意见和支持。
基本思路
这个方案主要用到了深度优先的递归循环、策略模式和基于枚举的单例模式,针对每种不同类型异常单独实现异常处理逻辑,实际中大多也是如此。
异常在抛出的时候有两种情况:一是没有子异常(getCause() == null),另一种是有子异常。深度优先指的是优先以抛出异常的源头为准进行处理,比如项目内部抛出了一个NullPointerException,然后外层catch块捕获后重新包装成IllegalArgumentException,那么NPE就是“异常的源头”,那么最终就是处理NPE后返回给前端。
策略模式只的是针对每种异常单独注册处理逻辑,放到HashMa