טיפול בשגיאות ב-Cloud Storage ב-Android

לפעמים דברים לא מסתדרים כמו שתכננו ומתרחשת שגיאה.

אם יש ספק, כדאי לבדוק את השגיאה שהוחזרה ולראות מה כתוב בהודעת השגיאה. בדוגמת הקוד הבאה מוצגת הטמעה של handler שגיאות מותאם אישית שבודק את קוד השגיאה ואת הודעת השגיאה שמוחזרים על ידי Cloud Storage. אפשר להוסיף את הפונקציות האלה לטיפול בשגיאות לאובייקטים שונים שמשמשים ב-API‏ Cloud Storage (לדוגמה, UploadTask ו-FileDownloadTask).

Kotlin

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 Security Rules שמאפשרים את הפעולה, אבל אתם עדיין מתקשים לתקן את השגיאה, אתם יכולים להיכנס לדף התמיכה ולעדכן אותנו איך נוכל לעזור.

טיפול בהודעות שגיאה

יכולות להיות כמה סיבות לשגיאות, כולל קובץ שלא קיים, למשתמש אין הרשאה לגשת לקובץ הרצוי או שהמשתמש ביטל את העלאת הקובץ.

כדי לאבחן את הבעיה ולטפל בשגיאה בצורה נכונה, הנה רשימה מלאה של כל השגיאות שהלקוח שלנו יציג, ואיך הן יכולות להתרחש. קודי השגיאה בטבלה הזו מוגדרים במחלקה StorageException כקבועים של מספרים שלמים.

קוד סיבה
ERROR_UNKNOWN אירעה שגיאה לא ידועה.
ERROR_OBJECT_NOT_FOUND לא קיים אובייקט בהפניה שצוינה.
ERROR_BUCKET_NOT_FOUND לא הוגדר מאגר (bucket) עבור Cloud Storage
ERROR_PROJECT_NOT_FOUND לא הוגדר פרויקט עבור Cloud Storage
ERROR_QUOTA_EXCEEDED חרגת מהמכסה של דלי Cloud Storage. אם אתם משתמשים בתוכנית התמחור Spark, כדאי לשדרג לתוכנית התמחור Blaze עם תשלום לפי שימוש. אם כבר נרשמתם לתוכנית התמחור Blaze, עליכם לפנות לתמיכה של Firebase.

חשוב: החל מ-1 באוקטובר 2025, התוכנית Blaze נדרשת לשימוש ב-Cloud Storage, גם בדלי ברירת מחדל.
ERROR_NOT_AUTHENTICATED המשתמש לא אומת. צריך לבצע אימות ולנסות שוב.
ERROR_NOT_AUTHORIZED למשתמש אין הרשאה לבצע את הפעולה המבוקשת. צריך לבדוק את הכללים כדי לוודא שהם נכונים.
ERROR_RETRY_LIMIT_EXCEEDED חריגה ממגבלת הזמן המקסימלית של פעולה (העלאה, הורדה, מחיקה וכו'). אפשר לנסות שוב.
ERROR_INVALID_CHECKSUM הקובץ בלקוח לא תואם לסיכום הביקורת של הקובץ שהתקבל בשרת. כדאי לנסות להעלות שוב.
ERROR_CANCELED המשתמש ביטל את הפעולה.

בנוסף, ניסיון להתקשר אל getReferenceFromUrl() עם כתובת URL לא חוקית יוביל להצגת השגיאה IllegalArgumentException. הארגומנט של השיטה שלמעלה חייב להיות בפורמט gs://bucket/object או https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>