温馨提示×

springboot怎么捕获全局异常

小亿
144
2024-01-05 22:11:32
栏目: 编程语言

在Spring Boot中,可以通过实现ErrorController接口或者使用@ControllerAdvice注解来捕获全局异常。

方法一:实现ErrorController接口

  1. 创建一个自定义的异常处理类,实现ErrorController接口,并重写getErrorPath方法和处理异常的方法。
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class CustomErrorController implements ErrorController {

    @Override
    public String getErrorPath() {
        return "/error"; // 定义错误页面的路径
    }

    @RequestMapping("/error")
    public String handleError() {
        // 处理异常的逻辑
        return "error"; // 返回错误页面
    }
}
  1. application.propertiesapplication.yml配置文件中设置错误页面的路径。

方法二:使用@ControllerAdvice注解

  1. 创建一个全局异常处理类,使用@ControllerAdvice注解标记,并使用@ExceptionHandler注解定义处理异常的方法。
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public ModelAndView handleException(Exception e) {
        // 处理异常的逻辑
        ModelAndView mav = new ModelAndView();
        mav.addObject("errorMsg", e.getMessage());
        mav.setViewName("error"); // 返回错误页面
        return mav;
    }
}
  1. application.propertiesapplication.yml配置文件中设置错误页面的路径。

以上两种方法都可以捕获全局异常,并返回自定义的错误页面或错误信息。

0