项目临近结束,越来越体会到一个完整的异常处理的重要性,之前写代码的时候,基本上没有考虑统一的异常处理,大多数情况下使用了try catch的模式,简单的将异常输出到了log完事,业务逻辑的处理方面更是直接在service层次返回string,通过response直接输出json到前端来展示,目前看来,有非常大的弊病。
1、许多异常没有捕捉到,客户端点击以后没有任何回复;
2、缺乏统一的异常分类,每个程序员根据自己的经验来进行操作,同样的异常在不同程序中有不同的命名;
3、异常发现后,缺乏统一的事务管理,导致数据操作的不一致性;
5、每一个程序员都需要去关心如何处理异常,缺乏从上至下的统一架构设计思路;
基于以上几点,这段时间打算要找找方法解决异常处理的问题,主要途径是google和向高手请教,目前一个初步的思路是:
1、对所有的异常进行编号,以及标准化,并存储在一个统一的属性文件中;
2、所有的service均抛出一个BaseException异常;
3、在action当中,(或者AOP当中),对抛出的异常进行处理,如果有事务的,需要进行回滚操作;
4、由于抛出异常极度消耗系统性能,考虑继承BaseException类,重写fillInStackTrace类;
public Throwable fillInStackTrace() {
return this;
} 5、考虑和前端和后端的通信问题,分别考虑ajax提交的情况和springmvc提交情况,前者应该是弹出窗口提示,后者则应该是统一redirect一个错误提示页面;
6、新手入门,还有很多考虑不完善的地方,希望和大家一起交流;