在Java Spring中处理全局异常可以通过以下几个步骤:
@ControllerAdvice
注解来标识该类为全局异常处理器。@ExceptionHandler
注解来定义具体的异常处理方法,该方法用于处理特定类型的异常。以下是一个示例:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleException(Exception e) {
// 记录日志
log.error("An error occurred: {}", e.getMessage());
// 封装错误信息
ErrorResponse errorResponse = new ErrorResponse();
errorResponse.setCode(HttpStatus.INTERNAL_SERVER_ERROR.value());
errorResponse.setMessage("An error occurred, please try again later.");
return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
@ExceptionHandler(ValidationException.class)
public ResponseEntity<ErrorResponse> handleValidationException(ValidationException e) {
// 记录日志
log.error("Validation failed: {}", e.getMessage());
// 封装错误信息
ErrorResponse errorResponse = new ErrorResponse();
errorResponse.setCode(HttpStatus.BAD_REQUEST.value());
errorResponse.setMessage("Validation failed: " + e.getMessage());
return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST);
}
// 其他具体的异常处理方法...
}
这样,当发生未被处理的异常时,全局异常处理类会自动捕获该异常并调用相应的处理方法进行处理。可以根据具体的异常类型进行定制化的处理,如记录日志、返回错误码和错误信息等。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云