在 Spring Boot 中,实现全局异常处理通常涉及到使用 @ControllerAdvice 注解的异常处理类。@ControllerAdvice 注解用于定义全局性的异常处理逻辑,让开发者能够集中处理应用程序中抛出的异常。以下是实现全局异常处理的基本步骤:

  1. 创建异常处理类: 创建一个类并使用 @ControllerAdvice 注解标注,该类中的方法将处理不同类型的异常。

    import org.springframework.http.HttpStatus;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.ResponseStatus;
    
    @ControllerAdvice
    public class GlobalExceptionHandler {
    
        @ExceptionHandler(Exception.class)
        @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
        public String handleException(Exception e, Model model) {
            model.addAttribute("error", e.getMessage());
            return "error";
        }
    
        // Add more @ExceptionHandler methods for specific exceptions if needed
    }
    

    在上面的例子中,handleException 方法处理所有类型的 Exception,并返回一个带有错误信息的视图。你可以根据需要添加更多的 @ExceptionHandler 方法来处理不同类型的异常。

  2. 自定义错误页面: 创建一个用于显示异常信息的错误页面,比如 error.html。在上面的例子中,handleException 方法返回的是 "error" 字符串,Spring Boot 将尝试寻找对应的视图模板。

    <!-- src/main/resources/templates/error.html -->
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Error</title>
    </head>
    <body>
        <h1>Error</h1>
        <p th:text="${error}"></p>
    </body>
    </html>
    

    这个页面将显示异常的详细信息。

  3. 配置全局异常处理: 在 Spring Boot 应用程序的主类中,可以添加 @EnableWebMvc 注解以启用全局异常处理。

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.EnableAspectJAutoProxy;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    
    @SpringBootApplication
    @EnableWebMvc
    @EnableAspectJAutoProxy
    public class MyApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(MyApplication.class, args);
        }
    }
    

    @EnableWebMvc 注解启用了 Spring Boot 的 MVC 配置,这样就可以使用 @ControllerAdvice 来定义全局异常处理。

通过以上步骤,你就可以在应用程序中实现全局异常处理。当异常发生时,Spring Boot 会调用相应的异常处理方法,并在自定义的错误页面中显示异常信息。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.