在Controller里应该怎么处理Service的异常,大段的Try Catch 会有什么坏处?

大家好,我是修真院的一枚正在修行的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官方也提供了基于注解的统一异常处理方式,但是对代码的入侵性较大。

参考连接:https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

7.参考文献

相关阅读:http://blog.csdn.net/column/details/spring-mvc.html   

引用:学习笔记源码下载地址:https://github.com/eson15/SpringMVC_Study

8.更多讨论

视频:腾讯视频

ppt连接:PPT

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容