谷粒学院-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);
}

结果:

posted @ 2021-07-27 12:13  Coder-Wang  阅读(110)  评论(0编辑  收藏  举报