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

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

אם אתם לא בטוחים, כדאי לבדוק את השגיאה שהוחזרה ולקרוא את הודעת השגיאה. הקוד הבא מציג הטמעה של מנהל שגיאות בהתאמה אישית, שבודק את קוד השגיאה ואת הודעת השגיאה שמוחזרים על ידי Cloud Storage. אפשר להוסיף מטפלים בשגיאות כאלה לאובייקטים שונים שנעשה בהם שימוש ב-API Cloud Storage (לדוגמה, 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
    }
}

אם בדקתם את הודעת השגיאה ויש לכם Cloud Storage Security Rules שמאפשר את הפעולה שלכם, אבל אתם עדיין מצליחים לתקן את השגיאה, תוכלו להיכנס אל דף התמיכה שלנו ולהודיע לנו איך נוכל לעזור.

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

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

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

קוד סיבה
ERROR_UNKNOWN אירעה שגיאה לא ידועה.
ERROR_OBJECT_NOT_FOUND אין אובייקט בהפניה שצוינה.
ERROR_BUCKET_NOT_FOUND לא הוגדר קטגוריה ל-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>.