SpringBoot配置全局的异常捕获 - ajax形式
在Spring Boot中,可以通过@ControllerAdvice注解创建一个全局异常处理类,用于捕获和处理应用程序中发生的异常。对于Ajax形式的请求,可以返回一个自定义的ResponseEntity对象,包含错误信息和状态码。
以下是一个简单的示例:
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
@ControllerAdvice
public class GlobalExceptionHandler {
// 捕获所有异常类型
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleException(Exception e) {
ErrorResponse errorResponse = new ErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), e.getMessage());
return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
// 捕获特定异常类型
@ExceptionHandler(MyCustomException.class)
public ResponseEntity<ErrorResponse> handleMyCustomException(MyCustomException e) {
ErrorResponse errorResponse = new ErrorResponse(HttpStatus.BAD_REQUEST.value(), e.getMessage());
return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);
}
// 自定义错误响应类
public static class ErrorResponse {
private int status;
private String message;
public ErrorResponse(int status, String message) {
this.status = status;
this.message = message;
}
// Getters and setters
}
}
在这个示例中,我们定义了一个全局异常处理器GlobalExceptionHandler
,它会捕获所有的异常,并根据捕获的异常类型返回不同的HTTP状态码和错误信息。对于Ajax请求,我们返回了一个包含错误信息和状态码的JSON对象。
这样配置后,当应用程序中发生异常时,Spring Boot会通过这个全局异常处理器处理异常,并返回一个格式化的错误响应给客户端。
评论已关闭