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