一、异常处理思路:
系统中异常包含俩类:
- 预期异常;
- 运行时异常(RuntimeException);
前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试来减少运行时异常的发生。
系统的 dao、service、controller 出现都通过 throws Exception 向上抛出,最后由 springmvc 前端控制器交由异常处理器进行异常处理,如下图:
二、自定义异常类
三、全局异常处理器
思路:
系统遇到异常,在程序中手动抛出,dao 抛给 service、service 给 controller、controller 抛给前端控制器,前端控制器调用全局异常处理器。
全局异常处理器处理思路:
- 解析出异常类型
- 如果该 异常类型是系统 自定义的异常,直接取出异常信息,在错误页面展示
- 如果该 异常类型不是系统 自定义的异常,构造一个自定义的异常类型(信息为“未知错误”)
四、错误页面
五、在 springMVC.xml 中配置全局异常处理器
六、异常测试
在产品修改的 controller 方法中抛出异常:
在 service 接口中抛出异常:
七、总结:
- 如果与业务功能相关的异常,建议在 service 中抛出异常。
- 与业务功能没有关系的异常,建议在 controller 中抛出。
上边的空异常,建议在 service中 抛出异常。