SpringBoot中,@ControllerAdvice 即可开启全局异常处理,使用该注解表示开启了全局异常的捕获,我们只需在自定义一个方法使用@ExceptionHandler注解然后定义捕获异常的类型即可对这些捕获的异常进行统一的处理。
1.1 自定义全局异常类
/**
* @description: 自定义异常处理
* @author: DT
* @date: 2021/4/19 21:17
* @version: v1.0
*/
@ControllerAdvice
public class MyExceptionHandler {
@ExceptionHandler(value =Exception.class)
@ResponseBody
public String exceptionHandler(Exception e){
System.out.println("全局异常捕获>>>:"+e);
return "全局异常捕获,错误原因>>>"+e.getMessage();
}
}
复制代码
1.2 手动抛出异常
@GetMapping("/getById/{userId}")
public CommonResult<User> getById(@PathVariable Integer userId){
// 手动抛出异常
int a = 10/0;
return CommonResult.success(userService.getById(userId));
}
复制代码
1.3 测试打印
很显然这样的用户体验效果是极差的,虽然这种能够让我们知道异常的原因,但是在很多的情况下来说,可能还是不够人性化,不符合我们的要求。