谷粒学院-5-统一异常处理
我们想让异常结果也显示为统一的返回结果对象,并且统一处理系统的异常信息,那么需要统一异常处 理
流程:
因为也需要返回Result对象,所以需要导入common_util子模块的依赖
<!--common_utils-->
<dependency>
<groupId>com.wang</groupId>
<artifactId>common_utils</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
在common_base下的对应包下创建全局异常处理类GlobalExceptionhander.java
/*
* 统一异常处理类
* @ControllerAdvice是一个加强版的@Controller
* 用来处理全局数据
* 搭配注解使用:
* @ExceptionHandler异常处理
* @ModelAttribute添加全局数据
* @InitBinder请求参数预处理
* */
@ControllerAdvice
public class GlobalExceptionHandle {
/*
针对全局错误(注意容器级别的错误不能捕捉到)
* */
@ExceptionHandler(Exception.class)
@ResponseBody
public Result error(Exception e){
e.printStackTrace();
return Result.failure().message("全局异常处理");
}
/*
* 针对数学错误
* */
@ExceptionHandler(ArithmeticException.class)
@ResponseBody
public Result arithmeticError(ArithmeticException e){
e.printStackTrace();
return Result.failure().message("算术错误");
}
}
测试:
在之前写好的controller中加入错误语句
/*
* 根据id查询
* */
@ApiOperation(value = "根据id查询")
@GetMapping("{id}")
public Result queryTeacherById(
@ApiParam(name = "id",value = "需要查询的讲师id",required = true)
@PathVariable("id")Integer id
){
//测试错误
int i= 10/0;
EduTeacher teacher = eduTeacherService.getById(id);
return Result.success().data("teacher",teacher);
}
结果: