自定义异常类(配合结果类)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
* @author yww
* @version 1.0
* @ClassName BizException
* @Descriprtion 自定义异常
* @date 2021/10/9 15:59
**/
@Getter
@AllArgsConstructor
public class GlobalException extends RuntimeException {

/**
* 错误码
*/
private Integer code = FAILED.getCode();

/**
* 错误信息
*/
private final String message;

public GlobalException(String message) {
this.message = message;
}

public GlobalException(ResultCode resultCode) {
this.code = resultCode.getCode();
this.message = resultCode.getMessage();
}

}

这里需要注意的是,自定义异常需要继承RuntimeException(运行时异常)。

定义全局异常处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* <p>
* 全局异常处理
* </p>
*
* @author yww
* @version 1.0
* @date 2021/10/10 21:13
**/
@RestControllerAdvice
public class ControllerAdviceHandler {

/**
* 处理所有异常信息
* @param e 服务异常
* @return 异常信息
*/
@ExceptionHandler(value = Exception.class)
public Result errorHandler(Exception e) {
return Result.failure();
}


/**
* 处理通用的服务异常信息
* 统一处理GlobalException异常,异常处理顺序是从小异常到大异常。
* @param e 服务异常
* @return 异常信息
*/
@ExceptionHandler(value = GlobalException.class)
public Result errorHandler(GlobalException e) {
return Result.failure(e.getCode(), e.getMessage());
}


}

@RestControllerAdvice注解其实是@ControllerAdvice和@ResponseBody的合并。

@ControllerAdvice通常配合@ExceptionHandler来捕抓异常信息。

@ControllerAdvice可以捕抓到系统抛出的异常,然后使用@ExceptionHandler匹配具体处理异常信息。