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

如果您已檢查錯誤訊息並擁有允許您執行操作的雲端儲存安全規則,但仍難以修復錯誤,請造訪我們的支援頁面並讓我們知道如何提供協助。

處理錯誤訊息

發生錯誤的原因有很多,包括檔案不存在、使用者沒有存取所需檔案的權限或使用者取消檔案上傳。

為了正確診斷問題並處理錯誤,以下是我們的客戶將提出的所有錯誤及其發生方式的完整清單。此表中的錯誤代碼在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用戶取消了操作。

此外,嘗試使用無效 URL 呼叫getReferenceFromUrl()將導致拋出IllegalArgumentException 。上述方法的參數必須採用gs://bucket/objecthttps://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>的形式