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

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

אם אתם לא בטוחים, בדקו את השגיאה שהוחזרה וקראו את הודעת השגיאה. הקוד הבא מציג הטמעה של פונקציה מותאמת אישית לטיפול בשגיאות, שבודקת את קוד השגיאה ואת הודעת השגיאה שמוחזרים על ידי 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 לא הוגדרה קטגוריה ל-Cloud Storage
ERROR_PROJECT_NOT_FOUND לא הוגדר פרויקט ל-Cloud Storage
ERROR_QUOTA_EXCEEDED חרגתם מהמכסה של הקטגוריה. כדי להשתמש ב-Cloud Storage for Firebase, צריך להירשם לתוכנית התמחור והתשלומים Blaze בתשלום לפי שימוש. אם השגיאה הזו מופיעה בפרויקט בתוכנית התמחור Spark, צריך לשדרג לתוכנית התמחור Blaze כדי לקבל שוב גישה. פרטים נוספים זמינים בשאלות הנפוצות.
ERROR_NOT_AUTHENTICATED המשתמש לא מאומת. צריך לבצע אימות ולנסות שוב.
ERROR_NOT_AUTHORIZED למשתמש אין הרשאה לבצע את הפעולה המבוקשת. צריך לבדוק את הכללים כדי לוודא שהם נכונים.
ERROR_RETRY_LIMIT_EXCEEDED חרגתם ממגבלת הזמן המקסימלית לפעולה (העלאה, הורדה, מחיקה וכו'). אפשר לנסות שוב.
ERROR_INVALID_CHECKSUM הקובץ בלקוח לא תואם לסיכום הביקורת (checksum) של הקובץ שהתקבל בשרת. כדאי לנסות להעלות שוב.
ERROR_CANCELED המשתמש ביטל את הפעולה.

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