如何在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
相关产品推荐
相关产品推荐

