一、统一异常处理
@ControllerAdvice
public class GlobalExceptionHandler {
/**
* 统一异常
* @param e
* @return
*/
@ExceptionHandler(Exception.class)
@ResponseBody
public Result unifiedException(Exception e){
e.printStackTrace();
return Result.error();
}
}
测试代码
@GetMapping("/all")
public Result allUser(){
// 测试异常
int i = 1/0;
List<User> list = userService.list(null);
return Result.success().data("results", list);
}
返回统一结果
二、特定异常处理
@ControllerAdvice
public class GlobalExceptionHandler {
/**
* 统一异常
* @param e
* @return
*/
@ExceptionHandler(Exception.class)
@ResponseBody
public Result unifiedException(Exception e){
e.printStackTrace();
return Result.error();
}
/**
* 特定异常
* @param e
* @return
*/
@ExceptionHandler(ArithmeticException.class)
@ResponseBody
public Result specificException(ArithmeticException e){
e.printStackTrace();
return Result.error().message("特定异常ArithmeticException...");
}
}
使用上面测试方法,返回结果
三、自定义异常
自定义异常处理类
/**
* 自定义异常类
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AwordException extends RuntimeException {
private Integer code;
private String msg;
}
自定义异常处理方法
@ControllerAdvice
public class GlobalExceptionHandler {
/**
* 统一异常
* @param e
* @return
*/
@ExceptionHandler(Exception.class)
@ResponseBody
public Result unifiedException(Exception e){
e.printStackTrace();
return Result.error();
}
/**
* 特定异常
* @param e
* @return
*/
@ExceptionHandler(ArithmeticException.class)
@ResponseBody
public Result specificException(ArithmeticException e){
e.printStackTrace();
return Result.error().message("特定异常ArithmeticException...");
}
/**
* 自定义异常
* @param e
* @return
*/
@ExceptionHandler(AwordException.class)
@ResponseBody
public Result customException(AwordException e){
e.printStackTrace();
return Result.error().message(e.getMsg()).code(e.getCode());
}
}
测试业务中跑出自定义异常
@GetMapping("/all")
public Result allUser(){
try {
// 测试异常
int i = 1/0;
} catch (Exception e) {
throw new AwordException(4000, "自定义异常...");
}
List<User> list = userService.list(null);
return Result.success().data("results", list);
}
测试返回结果