SpringBoot异常处理时,在异常处理类不加@ResponseBody注解会404

80 阅读1分钟

今天学习springboot异常处理时出现的小bug,记录一下... 当我写好了异常处理类GlobalExceptionHandler

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class) // todo 拦截所有异常
    @ResponseBody  // 出现bug之前我没加
    public Result error(Exception e){
        return Result.fail().message("发生"+e.getMessage()+"异常");
    }
    @ExceptionHandler({ArithmeticException.class, NullPointerException.class}) // todo 拦截算数异常和空指针异常
    @ResponseBody  // 出现bug之前我没加
    public Result error(ArithmeticException e){
        return Result.fail().message("发生"+e.getMessage()+"异常");
    }
}

就因为我在GlobalExceptionHandler的异常处理方法上没加@ResponseBody注解,他不能给前端返回json数据。 原因是因为我在Controller类上加了@ResponseBody(不是方法),他就会默认只接收json数据,但是异常被异常处理类处理之后没有给前端返回json数据,他就认为在Controller中没有一个能处理这个请求的handler,所以就报了404