معالجة الأخطاء في Cloud Storage على Flutter

أثناء إنشاء تطبيق، قد تحدث أحيانًا أخطاء غير متوقّعة.

في حال حدوث خطأ، يمكنك رصد الاستثناء الذي تعرضه الدالة والاطّلاع على رسالة الخطأ.

final storageRef = FirebaseStorage.instance.ref().child("files/uid");
try {
  final listResult = await storageRef.listAll();
} on FirebaseException catch (e) {
  // Caught an exception from Firebase.
  print("Failed with error '${e.code}': ${e.message}");
}

التعامل مع رسائل الخطأ

هناك عدد من الأسباب التي قد تؤدي إلى حدوث أخطاء، بما في ذلك عدم توفّر الملف أو عدم حصول المستخدم على إذن للوصول إلى الملف المطلوب أو إلغاء المستخدم لعملية تحميل الملف.

لتشخيص المشكلة والتعامل مع الخطأ بشكلٍ صحيح، إليك قائمة كاملة بجميع الأخطاء التي سيعرضها العميل وكيفية حدوثها.

الرمز الوصف
storage/unknown حدث خطأ غير معروف.
storage/object-not-found لا يتوفّر أي عنصر في المرجع المطلوب.
storage/bucket-not-found لم يتم إعداد أي حزمة لـ Cloud Storage
storage/project-not-found لم يتم إعداد أي مشروع لـ Cloud Storage
storage/quota-exceeded تم تجاوز الحصة المخصصة لحزمتك. يتطلّب Cloud Storage for Firebase خطة Blaze المَرِنة للدفع حسب الاستخدام. إذا ظهرت لك هذه الرسالة في مشروع ضمن خطة Spark الأساسية، عليك الترقية إلى خطة Blaze المَرِنة لاستعادة إمكانية الوصول. لمزيد من التفاصيل، يمكنك مراجعة الأسئلة الشائعة.
storage/unauthenticated لم تتم مصادقة المستخدم، يُرجى المصادقة والمحاولة مرة أخرى.
storage/unauthorized المستخدم غير مخوّل بتنفيذ الإجراء المطلوب، يُرجى التحقّق من قواعد الأمان للتأكّد من صحتها.
storage/retry-limit-exceeded تم تجاوز الحد الأقصى للوقت المسموح به لإجراء عملية (تحميل أو تنزيل أو حذف أو غير ذلك). يُرجى محاولة التحميل مرة أخرى.
storage/invalid-checksum لا يتطابق الملف على العميل مع مجموع التحقق للملف الذي تلقّاه الخادم. يُرجى محاولة التحميل مرة أخرى.
storage/canceled ألغى المستخدم العملية.
storage/invalid-event-name تم تقديم اسم فعالية غير صالح. يجب أن يكون أحد الأسماء التالية: [running أو progress أو pause]
storage/invalid-url تم تقديم عنوان URL غير صالح إلى refFromURL(). يجب أن يكون بالصيغة: gs://bucket/object أو https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>
storage/invalid-argument يجب أن تكون الوسيطة التي تم تمريرها إلى put() هي File أو Blob أو UInt8 Array. يجب أن تكون الوسيطة التي تم تمريرها إلى putString() سلسلة أولية أو Base64 أو Base64URL.
storage/no-default-bucket لم يتم ضبط أي حزمة في السمة storageBucket في الإعداد.
storage/cannot-slice-blob يحدث هذا عادةً عندما يتم تغيير الملف المحلي (حذفه أو حفظه مرة أخرى أو غير ذلك). يُرجى محاولة التحميل مرة أخرى بعد التأكّد من عدم تغيير الملف.
storage/server-file-wrong-size لا يتطابق الملف على العميل مع حجم الملف الذي تلقّاه الخادم. يُرجى محاولة التحميل مرة أخرى.