谷粒学院项目实战40——统一异常处理之全局异常处理
到目前为止,我们都没有对异常情况进行统一处理,如果发生异常,接口暴露的只是简略的信息。
比如,我们可以制造一个异常场景。
@ApiOperation("查找教师")
@GetMapping("/findTeacher/{id}")
public R findTeacher(@PathVariable String id) {
EduTeacher eduTeacher = eduTeacherService.getById(id);
int i = 5/0;
return R.ok().data("item", eduTeacher);
}
自行findTeacher的请求,responseBody信息如下。
下面我们统一对异常信息进行处理。在common的servicebase包下新建包exceptionhandler,包下新建类。
@ControllerAdvice
public class GlobalExceptionHandler {
// 指定全部Expection类型异常执行handler
@ExceptionHandler(Exception.class)
@ResponseBody //返回数据
public R error(){
return R.error().message("执行全局统一异常处理...");
}
}
上述代码要使用common_utils模块中的R。因此先在servicebase中引入依赖再导包。
<dependency>
<groupId>com.wangzhou</groupId>
<artifactId>common_utils</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
由于依赖传递,如下图,故可以移除原来service-edu中对于common_utils的依赖,避免重复引入。
测试结果如下。
java全栈日日学 文章被收录于专栏
java全栈每日必学,不要高估自己一年能做的事,不要低估自己十年能做的事