美文网首页IT修真院_JAVA
在Controller里应该怎么处理Service的异常,大段的

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

作者: 兮_eeb8 | 来源:发表于2018-01-02 12:10 被阅读845次

大家好,我是修真院的一枚正在修行的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

相关文章

网友评论

    本文标题:在Controller里应该怎么处理Service的异常,大段的

    本文链接:https://www.haomeiwen.com/subject/icqfnxtx.html