SpringBoot中全局异常捕获与参数校验的优雅实现
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.context.request.WebRequest;
@ControllerAdvice
public class GlobalExceptionHandler {
// 处理所有的MethodArgumentNotValidException异常
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<String> handleValidationExceptions(MethodArgumentNotValidException ex, WebRequest request) {
// 这里可以自定义错误信息的格式,例如使用JSON格式
String errorMessage = ex.getBindingResult().getAllErrors().get(0).getDefaultMessage();
return new ResponseEntity<>(errorMessage, HttpStatus.BAD_REQUEST);
}
// 处理其他的异常
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleAllExceptions(Exception ex, WebRequest request) {
// 这里可以自定义错误信息的格式
return new ResponseEntity<>("An error occurred: " + ex.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
这个代码示例展示了如何在Spring Boot中创建一个全局异常处理器,用于捕获参数验证异常(MethodArgumentNotValidException
)和其他类型的异常。它提供了一个简单的错误处理方法,返回自定义的错误信息,并且遵循了Restful API设计的最佳实践,返回合适的HTTP状态码。
评论已关闭