在 Android 上处理错误

事情有时并不按预期发展,偶尔也会发生错误。

如有疑问,请检查返回的错误并查看错误消息的内容。下面的代码显示了一个自定义错误处理程序实现,它会检查 Firebase 存储返回的错误代码和错误消息。此错误处理程序可以添加到存储 API 中使用的各种对象(例如 UploadTaskFileDownloadTask)中。

class MyFailureListener implements OnFailureListener {
  @Override
  public void onFailure(@NonNull Exception exception) {
    int errorCode = ((StorageException) exception).getErrorCode();
    String errorMessage = exception.getMessage();
    // test the errorCode and errorMessage, and handle accordingly
  }
}

如果您已查看错误消息并且存储安全规则允许您执行所采取的操作,但错误仍无法修正,请访问我们的支持页面,并告诉我们您希望得到什么样的帮助。

处理错误消息

很多原因都可能导致错误发生,包括文件不存在、用户没有访问所需文件的权限,或者用户取消文件上传操作。

要正确诊断问题并处理错误,请查看下面的完整列表,了解我们的客户端可能报告的所有错误以及错误发生的原因。该表中的错误代码在 StorageException 类中定义为整型常量。

代码 原因
ERROR_UNKNOWN 发生未知错误。
ERROR_OBJECT_NOT_FOUND 指定的引用中没有任何对象。
ERROR_BUCKET_NOT_FOUND 没有为 Cloud Storage 配置任何存储分区。
ERROR_PROJECT_NOT_FOUND 没有为 Cloud Storage 配置任何项目。
ERROR_QUOTA_EXCEEDED 已超过您的 Cloud Storage 存储分区的配额。如果您使用的是免费方案,请升级为付费方案。如果您使用的是付费方案,请与 Firebase 支持团队联系。
ERROR_NOT_AUTHENTICATED 用户未经过身份验证,请先进行身份验证,然后重试。
ERROR_NOT_AUTHORIZED 用户无权执行所需的操作,请检查您的规则以确保其正确无误。
ERROR_RETRY_LIMIT_EXCEEDED 已超出某项操作(上传、下载、删除等)的最长时间限制。请重试。
ERROR_INVALID_CHECKSUM 客户端上的文件与服务器收到的文件的校验和不匹配。请尝试重新上传。
ERROR_CANCELED 用户已取消操作。

此外,尝试使用无效网址调用 getReferenceFromUrl() 将抛出 IllegalArgumentException 异常。上述方法的参数必须采用如下格式:gs://bucket/objecthttps://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面