springboot 全局异常
时间: 2023-07-12 10:44:51 浏览: 82
springboot全局异常处理
在 Spring Boot 中,我们可以通过编写一个异常处理器来处理全局异常。这个异常处理器需要实现 Spring Boot 的 ErrorController 接口,同时使用 @ControllerAdvice 和 @ExceptionHandler 注解来捕获异常和处理异常。
以下是一个简单的全局异常处理器的示例:
```java
@ControllerAdvice
public class GlobalExceptionHandler implements ErrorController {
private static final String ERROR_PATH = "/error";
@RequestMapping(ERROR_PATH)
public ResponseEntity<String> handleError(HttpServletRequest request) {
HttpStatus status = getStatus(request);
return new ResponseEntity<>("Error: " + status.getReasonPhrase(), status);
}
@Override
public String getErrorPath() {
return ERROR_PATH;
}
private HttpStatus getStatus(HttpServletRequest request) {
Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
if (statusCode != null) {
return HttpStatus.valueOf(statusCode);
}
return HttpStatus.INTERNAL_SERVER_ERROR;
}
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
return new ResponseEntity<>("Error: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
```
在上面的代码中,我们首先通过 @ControllerAdvice 注解将该类标记为全局异常处理器。然后,我们实现了 ErrorController 接口,并且在 getErrorPath 方法中返回了错误处理路径。接着,我们定义了一个 handleError 方法来处理错误,该方法首先获取错误状态码,然后返回一个 ResponseEntity 对象。最后,我们定义了一个 handleException 方法来处理所有的异常,该方法返回一个 ResponseEntity 对象。
使用上面的代码,我们就可以在 Spring Boot 应用中实现全局异常处理了。当应用发生异常时,我们就会调用 handleError 方法或 handleException 方法来处理异常。
阅读全文