處理 Android 裝置上的 Cloud Storage 錯誤

有時事情無法按計畫進行,也會發生錯誤。

如有疑慮,請查看傳回的錯誤,並查看錯誤訊息內容。下列程式碼顯示自訂錯誤處理常式實作項目,可用於檢查 Cloud Storage 傳回的錯誤代碼和錯誤訊息。這類錯誤處理常式可新增至 Cloud Storage API 中使用的各種物件 (例如 UploadTaskFileDownloadTask)。

Kotlin+KTX

internal inner class MyFailureListener : OnFailureListener {
    override fun onFailure(exception: Exception) {
        val errorCode = (exception as StorageException).errorCode
        val errorMessage = exception.message
        // test the errorCode and errorMessage, and handle accordingly
    }
}

Java

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
    }
}

如果您查看錯誤訊息並且具有允許執行動作的 Cloud Storage 安全性規則,但仍難以修正錯誤,請前往支援頁面,並告知我們可以提供協助。

處理錯誤訊息

導致錯誤的原因有很多,包括檔案不存在、使用者無權存取需要的檔案,或是使用者取消上傳檔案。

為正確診斷問題並處理錯誤,以下完整列出用戶端會引發的所有錯誤及問題發生方式。此表格中的錯誤代碼在 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> 格式