您好,欢迎来到花图问答。
搜索
您的当前位置:首页在Controller里应该怎么处理Service的异常,大段的

在Controller里应该怎么处理Service的异常,大段的

来源:花图问答

大家好,我是修真院的一枚正在修行的coder。今天给大家分享一下在Controller里应该怎么处理Service的异常,大段的Try Catch 会有什么坏处?并讲解一下springMVC的异常处理机制。

1.背景介绍

异常类分两大类型:Error类,Exception类

    Error类代表了编译和系统的错误,不允许捕获;属于JVM运行中发生的一些错误,虽然并不属于开发人员的范畴,但是有些Error还是由代码引起的,比如StackOverflowError经常由递归操作引起

Exception分为两种,检查类型(checked)和未检查类型(unchecked)。检查类型的异常就是说要程序员明确的去声明或者用try..catch语句来处理的异常,而非检查类型的异常则没有这些限制。

2.知识剖析

异常的处理

    针对预期可能发生的异常(检查类型(checked)),在代码手动处理异常可以try/catch捕获,可以向上抛出,可以声明。

针对运行时异常,只能通过规范代码质量、在系统测试时详细测试等排除运行时异常。

3.常见问题

在Controller里,大段的Try Catch会有什么坏处?

(1)try catch的代价比较大。相对于判断返回值,抛出异常到捕获,需要更多的cpu指令和代码

(2)Java的异常机制是由JVM控制的,业务逻辑复杂的情况下,会影响controller的执行效率

4.解决方案

(1)用错误码控制业务流程,需要对每个接口的返回都要做一个错误码的校验。

(2)自定义异常处理类,使用springMVC提供的统一的异常处理方式

5.编码实战

详见视频

6.扩展思考

springMVC官方也提供了基于注解的统一异常处理方式,但是对代码的入侵性较大。

7.参考文献

8.更多讨论

Copyright © 2019- huatuowenda.com 版权所有 湘ICP备2023022495号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务