有時事情不會按計劃進行並且會發生錯誤。
如有疑問,請檢查傳回的錯誤並查看錯誤訊息的內容。以下程式碼顯示了一個自訂錯誤處理程序實現,用於檢查 Cloud Storage 傳回的錯誤代碼和錯誤訊息。此類錯誤處理程序可以新增到 Cloud Storage API 中使用的各種物件(例如UploadTask
和FileDownloadTask
)。
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/object
或https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>
的形式