全局异常处理

Exception

案例中构造了一个有关sql的一个异常代码,因为Dept表中的dept_name是一个unique字段,那么当我们向这样表中尝试加入一个已经存在的部门时就会引发异常,而我们要做的就是去设置一个全局异常处理器去捕获这个异常,并将结果响应发送给前端。

全局处理器

当数据库连接发生异常时,会将这个异常信息传递到service层,而service会将这个异常信息传递给controller层,最后controller层会将这个异常信息传递到全局异常处理器,在全局异常处理器中把错误信息响应给前端。

这里主要用到了两个注解

  • RestControllerAdvice

    这个注解表明了当前这个类是全局异常处理类

  • ExceptionHandler

    可以在这个注解里面标明这个方法接受哪些异常处理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
package com.itheima.exception;

import com.itheima.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@Slf4j
@RestControllerAdvice // 全局异常信息注解
public class GlobalException {
    @ExceptionHandler(value = Exception.class) // 所有发生异常的类
    public Result exception(Exception e) {
        log.error(e.getMessage());
        return Result.error(e.getMessage());
    }
}
Licensed under CC BY-NC-SA 4.0
花有重开日,人无再少年
使用 Hugo 构建
主题 StackJimmy 设计