springboot怎么配置全局异常
时间: 2023-06-13 07:05:54 浏览: 111
在Spring Boot中,可以使用@ControllerAdvice和@ExceptionHandler注解来处理全局异常。@ControllerAdvice用于定义全局异常处理器类,@ExceptionHandler用于定义处理特定异常的方法。
以下是一个示例:
1. 创建一个全局异常处理器类GlobalExceptionHandler:
```
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleException(Exception ex) {
ErrorResponse errorResponse = new ErrorResponse();
errorResponse.setMessage(ex.getMessage());
errorResponse.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
```
2. 在handleException方法中,我们可以定义我们希望返回的错误响应。在这个例子中,我们返回一个包含错误消息和HTTP状态码的ErrorResponse对象。
3. 我们可以定义多个@ExceptionHandler注解来处理不同类型的异常。例如:
```
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<ErrorResponse> handleResourceNotFoundException(ResourceNotFoundException ex) {
ErrorResponse errorResponse = new ErrorResponse();
errorResponse.setMessage(ex.getMessage());
errorResponse.setStatus(HttpStatus.NOT_FOUND.value());
return new ResponseEntity<>(errorResponse, HttpStatus.NOT_FOUND);
}
```
在这个例子中,我们定义了一个处理ResourceNotFoundException异常的方法。
4. 最后,我们需要在应用程序的启动类上添加@EnableWebMvc注解,以启用Spring MVC的全局异常处理功能。
```
@SpringBootApplication
@EnableWebMvc
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
```
这样,当应用程序抛出异常时,Spring Boot将使用我们定义的全局异常处理器来处理它们,并返回我们定义的错误响应。
阅读全文