我们在项目开发中,难免碰到业务代码异常,无论是
server 500,还是其他异常。 我们这里简单说一下,如何抛弃
try-catch,统一进行异常响应处理。
正常情况下,我们需要这么写:
❝
JobController
❞
// 查询所有
结果如图: 这样比较麻烦,要写很多try-catch.
那么有没有一种办法,帮我们自动拦截错误呢?
2、自定义异常处理
HandlerExceptionResolver, 就是处理异常的类;
❝
源码:
❞
public
以上有四个参数其实相当于:
request(请求)、response(响应)、hendler(处理器)、exception(异常);
接下来我们重写
WebMvcConfigurer.configureHandlerExceptionResolvers来处理异常:
❝com.scaffold.test.config.WebMvcConfig❞
package
业务失败的异常 : ServiceException 服务异常类
package
报错400代码;
❝2、
调用失败: Servlet异常
❞
if
结果如图:
❝3、
内部代码异常:比如 mysql 查询表名错误
❞
String
结果如图:
❝
4、请求接口404:这个在统一异常中无法获取,需要额外处理
❞
404进入不了统一异常处理,如下图:
所以,全局异常处理捕获不到404错误,需要专门写一个类用来处理404异常
❝com.scaffold.test.base.NotFoundException❞
package
3、完整代码
❝
com.scaffold.test.base.Result: 统一返回实体类❞
package
❝
com.scaffold.test.base.ResultCode: 统一返回响应码枚举,参考HTTP状态码❞
package
❝
统一异常拦截:
com.scaffold.test.config.WebMvcConfig
❞
package
❝404拦截处理:
com.scaffold.test.base.NotFoundException❞
package