HttpError.dioError constructor

HttpError.dioError(
  1. DioException dioException
)

处理dio报错

Implementation

HttpError.dioError(DioException dioException) {
  cause = dioException;
  switch (dioException.type) {
    case DioExceptionType.connectionTimeout:
    case DioExceptionType.receiveTimeout:
    case DioExceptionType.sendTimeout:
      errorType = ViewErrorType.timeOutError;
      logMsg = '请求超时';
      message = ErrorTextConfig().getViewErrorByType(errorType);
      break;
    case DioExceptionType.badResponse:
      errorType = ViewErrorType.responseError;
      try {
        int errCode = dioException.response?.statusCode ?? 200;
        code = errCode;
        switch (errCode) {
          case 400:
            logMsg = '400请求语法错误';
            break;
          case 401:
            logMsg = '401没有权限';
            errorType = ViewErrorType.tokenError;
            break;
          case 403:
            logMsg = '403服务器拒绝执行';
            break;
          case 404:
            logMsg = '404无法连接服务器';
            break;
          case 405:
            logMsg = '405请求方法被禁止';
            break;
          case 500:
            logMsg = '500服务器内部错误';
            break;
          case 502:
            logMsg = '502无效的请求';
            break;
          case 503:
            logMsg = '503服务器挂了';
            break;
          case 505:
            logMsg = '505不支持HTTP协议请求';
            break;
          default:
            logMsg = dioException.response?.statusMessage ?? "";
        }
        message = ErrorTextConfig().getViewErrorByType(errorType) +
            errCode.toString();
      } on Exception catch (_) {
        logMsg = '未知错误';
      }
      break;
    case DioExceptionType.cancel:
      errorType = ViewErrorType.cancelError;
      message = ErrorTextConfig().getViewErrorByType(errorType);
      logMsg = ErrorTextConfig().getViewErrorByType(errorType);
      break;
    case DioExceptionType.connectionError:
      if (dioException.error is SocketException) {
        ///网络请求失败
        errorType = ViewErrorType.netWorkError;
        message = ErrorTextConfig().getViewErrorByType(errorType);
      } else {
        errorType = ViewErrorType.unknown;
        message =
            '${ErrorTextConfig().getViewErrorByType(errorType)}: ${dioException.error}';
      }
      break;
    case DioExceptionType.unknown:
      HttpError httpError = HttpError.unknown();
      errorType = httpError.errorType;
      message = httpError.message;
      logMsg = httpError.logMsg;
      break;
    case DioExceptionType.badCertificate:
      errorType = ViewErrorType.sslError;
      message = ErrorTextConfig().getViewErrorByType(errorType);
      break;
    default:
      HttpError httpError = HttpError.unknown();
      errorType = httpError.errorType;
      message = httpError.message;
      logMsg = httpError.logMsg;
  }
}