铿然架构 | 作者 / 铿然一叶
这是铿然架构的第 30 篇原创文章
相关阅读:
JAVA编程思想(三)去掉别扭的if,自注册策略模式优雅满足开闭原则
JAVA编程思想(四)Builder模式经典范式以及和工厂模式如何选?
一、前后端调用关系
通常情况下,前后端调用关系如下:
后端服务的入口为Controller,然后调用Service,如涉及到数据库访问则调用DAO。在每一层都有可能抛出异常,有的是系统异常,有的是封装后的业务异常,例如用户密码错误,用户号码不存在都属于业务异常,需要封装后返回。为了方便异常处理,可以从底层一直向上抛,在返回客户端前再统一处理。
二、统一异常处理
当所有的客户端调用的入口都必须经过Controller时,可以拦截Controller进行处理,类结构如下:
代码参考如下:
1.GlobalExceptionHandler.java
拦截返回给客户端的异常进行处理。
1 | java复制代码import com.javashizhan.domain.Response; |
2.ThrowableHandler.java
对异常进行处理,和GlobalExceptionHandler类解耦,这样当非Controller作为调用入口类时也可以复用。
1 | java复制代码import java.io.PrintWriter; |
3.Response.java
异常转换结果,不管是否有异常,此类都可以使用。
1 | java复制代码/** |
4.TestGlobalExceptionController.java
验证类。
1 | java复制代码import org.springframework.web.bind.annotation.GetMapping; |
end.
本文转载自: 掘金