在 Spring Boot 中,实现全局异常处理通常涉及到使用 @ControllerAdvice
注解的异常处理类。@ControllerAdvice
注解用于定义全局性的异常处理逻辑,让开发者能够集中处理应用程序中抛出的异常。以下是实现全局异常处理的基本步骤:
-
创建异常处理类: 创建一个类并使用
@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
方法来处理不同类型的异常。 -
自定义错误页面: 创建一个用于显示异常信息的错误页面,比如
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>
这个页面将显示异常的详细信息。
-
配置全局异常处理: 在 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