springboot如何实现全局异常处理?
时间: 2024-12-13 21:13:44 浏览: 10
Spring Boot 提供了一种简洁的方式来处理应用程序中的全局异常。你可以通过创建一个全局异常处理器来捕获并统一处理所有未被其他特定异常处理器处理的异常。以下是基本步骤:
1. 首先,创建一个实现了`HandlerExceptionResolver`接口的类,比如`GlobalExceptionHandler`。这个接口的主要方法是`resolveException`,在这里你可以编写对异常的通用处理逻辑。
```java
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.ModelAndView;
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = Exception.class)
public ModelAndView handleException(WebRequest request, Exception e) {
// 记录日志,发送错误报告等
log.error("An error occurred", e);
// 返回自定义的错误视图,通常设置HTTP状态码
return new ModelAndView("error/errorPage", "error", e.getMessage())
.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
```
2. 在`@ControllerAdvice`注解上,`GlobalExceptionHandler`会自动应用到整个Spring MVC应用的所有控制器。这样,无论哪个控制器抛出异常,都会经过这里处理。
3. 如果需要返回不同的视图或HTTP状态码,可以根据异常的具体类型调整`handleException`方法的内容。
阅读全文