onError method

  1. @override
Future<void> onError(
  1. DioException err,
  2. ErrorInterceptorHandler handler
)

Called when an exception was occurred during the request.

Implementation

@override
Future<void> onError(
  DioException err,
  ErrorInterceptorHandler handler,
) async {
  // 从 extra 中获取动态 evaluator
  final dynamicEvaluator =
      err.requestOptions.extra[kRetryEvaluatorKey] as RetryEvaluator?;

  if (dynamicEvaluator != null) {
    // 使用动态 evaluator 创建临时拦截器处理
    final tempInterceptor = RetryInterceptor(
      dio: dio,
      logPrint: logPrint,
      retries: retries,
      retryDelays: retryDelays,
      retryEvaluator: dynamicEvaluator,
      ignoreRetryEvaluatorExceptions: ignoreRetryEvaluatorExceptions,
      retryableExtraStatuses: retryableExtraStatuses,
    );
    return tempInterceptor.onError(err, handler);
  }

  // 使用默认逻辑
  return super.onError(err, handler);
}