處理 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>