问题:
在构建项目时,往往会出现很多异常,需要处理,但一个个处理过于费劲,所以通常使用全局异常处理
方法1:创建全局异常处理类(通用)
用于声明处理全局Controller方法异常的类 @ControllerAdvice public class GlobalExceptionHandler { 用于声明处理异常的方法 属性用于声明该方法处理的异常类型 @ExceptionHandler(Exception.class) 表示将方法的返回值作为HTTP的响应体 @ResponseBody public Result error(Exception e){ e.printStackTrace(); return Result.fail(); }当项目抛出异常,该类会进行捕获,后根据方法返回对应的异常状态信息给前端,
方法2:自定义异常(精确)
@Data public class DiyException extends RuntimeException{ private Integer code; public DiyException(Integer code,String massage){ super(massage); this.code=code; } }
@ControllerAdvice public class GlobalExceptionHandler { //处理所有异常 @ExceptionHandler(Exception.class) @ResponseBody public Result error(Exception e){ e.printStackTrace(); return Result.fail(); } //将自定义异常添加到全局异常处理类中 //处理自定义异常 @ExceptionHandler(DiyException.class) @ResponseBody public Result error(DiyException e){ e.getCode(); e.getMessage(); return Result.fail(e.getCode(),e.getMessage()); } }Exception的范围过大,无法准确的向前端,发生正确的错误信息,则可通过自定义异常,进行异常处理(其实可以理解成将try,catch统一到一个类下进行统一管理)