טיפול בשגיאות ב-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>.