You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter中处理Google Drive API的错误(含网络异常)

Google Drive API 创建文件的错误处理方案

你当前使用的依赖:

googleapis: ^11.4.0
googleapis_auth: ^1.4.1

driveApi.files.create方法的文档说明翻译如下:

///
/// 成功时完成并返回 [File] 对象。
///
/// 若API端点返回错误,则会完成并抛出 [commons.ApiRequestError]。
///

针对网络连接问题、API错误等场景,你可以通过**try-catch捕获不同类型的异常**来处理错误,具体实现如下:

错误处理代码示例

import 'dart:io' show SocketException;
import 'package:googleapis/common/common.dart' as commons;

// ... 其他业务代码 ...

try {
  var result = await driveApi.files.create(
    driveFile,
    uploadMedia: media,
  );
  // 处理创建成功后的逻辑,比如获取文件ID、提示用户操作完成
} on commons.ApiRequestError catch (e) {
  // 处理API返回的业务错误
  print('API错误:状态码 ${e.statusCode},消息 ${e.message}');
  // 根据状态码做针对性处理
  switch (e.statusCode) {
    case 401:
      // 未授权:引导用户重新登录或检查OAuth令牌有效性
      break;
    case 403:
      // 权限不足/配额耗尽:提示用户检查权限配置或等待配额重置
      break;
    case 404:
      // 资源不存在:确认目标文件夹ID是否有效
      break;
    case 500:
      // 服务器内部错误:提示用户稍后重试
      break;
    // 可根据业务需求添加更多状态码分支
  }
} on SocketException catch (e) {
  // 处理网络连接问题(无网络、DNS解析失败、连接超时等)
  print('网络错误:${e.message}');
  // 提示用户检查网络连接状态
} catch (e) {
  // 兜底处理其他未知错误,避免程序崩溃
  print('未知错误:${e.toString()}');
}

关键说明

  • API请求错误(commons.ApiRequestError):由Google Drive API端点主动返回,包含状态码、错误消息等详细信息,可根据状态码区分不同业务错误场景。
  • 网络连接错误(SocketException):属于Dart IO层异常,对应无网络、连接超时等底层网络问题。
  • 通用异常捕获:最后一个catch块用于覆盖上述未处理的所有未知错误,保证程序稳定性。

内容的提问来源于stack exchange,提问作者Michał Dobi Dobrzański

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 10:25:09