يمكن عرض رموز الحالة التالية في استجابات gRPC. ينطبق ذلك على جميع إصدارات gRPC الموثَّقة على هذا الموقع الإلكتروني.
الرمز | الحالة | ملاحظات |
---|---|---|
0 | OK |
سنتواصل معك في Success . |
1 | CANCELLED |
تم إلغاء العملية، عادةً من قِبل المتصل. |
2 | UNKNOWN |
على سبيل المثال، قد يتم عرض هذا الخطأ عندما تنتمي قيمة الحالة التي تمّ تلقّيها من مساحة عناوين أخرى إلى مساحة خطأ غير معروفة في مساحة العناوين هذه. وقد يتم أيضًا تحويل الأخطاء التي تنشئها واجهات برمجة التطبيقات التي لا تعرض معلومات كافية عن الخطأ إلى هذا الخطأ. |
3 | INVALID_ARGUMENT |
حدّد العميل وسيطة غير صالحة. |
4 | DEADLINE_EXCEEDED |
انتهت مهلة العملية قبل اكتمالها. بالنسبة إلى العمليات التي تغيّر حالة النظام، قد يتم عرض هذا الخطأ حتى إذا اكتملت العملية بنجاح. على سبيل المثال، استجابة ناجحة من خادم تأخّر وصولها لفترة طويلة بما يكفي لانتهاء المهلة. |
5 | NOT_FOUND |
لم يتم العثور على بعض الكيانات المطلوبة. |
6 | ALREADY_EXISTS |
الكيان الذي حاول العميل إنشاؤه متوفّر مسبقًا. |
7 | PERMISSION_DENIED |
لا يملك المتصل الإذن لتنفيذ العملية المحدّدة. لا تستخدِم PERMISSION_DENIED للرفض الناتج عن استنفاد بعض الموارد، بل استخدِم RESOURCE_EXHAUSTED بدلاً من ذلك لهذه الأخطاء. لا تستخدِم PERMISSION_DENIED إذا تعذّر تحديد هوية المتصل (استخدِم UNAUTHENTICATED بدلاً من ذلك لهذه الأخطاء). لا يعني ظهور رمز الخطأ PERMISSION_DENIED أنّ الطلب صالح أو أنّ الكيان المطلوب متوفّر أو يستوفي الشروط المسبقة الأخرى. |
8 | RESOURCE_EXHAUSTED |
تم استنفاد بعض الموارد، ربما حصة لكل مستخدم، أو ربما نفدت المساحة في نظام الملفات بالكامل. |
9 | FAILED_PRECONDITION |
تم رفض العملية لأنّ النظام ليس في الحالة المطلوبة لتنفيذ العملية. على سبيل المثال، يكون الدليل الذي سيتم حذفه غير فارغ أو تم تطبيق عملية rmdir على عنصر غير دليل. |
10 | ABORTED |
تم إلغاء العملية، عادةً بسبب مشكلة في التوافق، مثل تعذُّر التحقّق من التسلسل أو إلغاء المعاملة. |
11 | OUT_OF_RANGE |
تمّت محاولة إجراء العملية بعد النطاق المسموح به. |
12 | UNIMPLEMENTED |
لم يتم تنفيذ العملية أو أنها غير متاحة أو مفعَّلة في هذه الخدمة. |
13 | INTERNAL |
الأخطاء الداخلية وهذا يعني أنّه تمّ انتهاك بعض القيم الثابتة التي يتوقّعها النظام الأساسي. تم حجز رمز الخطأ هذا للأخطاء الخطيرة. |
14 | UNAVAILABLE |
هذه الخدمة غير متاحة حاليًا. من المرجّح أن يكون هذا ظرفًا عابرًا يمكن تصحيحه في حال إعادة المحاولة مع التراجع. |
15 | DATA_LOSS |
ثمة بيانات تالفة أو مفقودة ويتعذّر استرجاعها. |
16 | UNAUTHENTICATED |
لا يحتوي الطلب على بيانات اعتماد مصادقة صالحة للعملية. |
في بعض الأحيان، قد تنطبق رموز أخطاء متعددة. يجب أن تعرض الخدمات
رمز الخطأ الأكثر تحديدًا الذي ينطبق. على سبيل المثال، يُفضَّل استخدام
OUT_OF_RANGE
بدلاً من FAILED_PRECONDITION
إذا كان كلا الرمزين ينطبقان.
وبالمثل، يُفضَّل استخدام NOT_FOUND
أو ALREADY_EXISTS
بدلاً من FAILED_PRECONDITION
.
FAILED_PRECONDITION مقارنةً بـ ABORTED مقارنةً بـ UNAVAILABLE
في ما يلي اختبار بسيط قد يساعدك في الاختيار بين
FAILED_PRECONDITION
وABORTED
وUNAVAILABLE
:
- استخدِم
UNAVAILABLE
إذا كان بإمكان العميل إعادة محاولة المكالمة التي تعذّر إجراؤها فقط. - استخدِم
ABORTED
إذا كان على العميل إعادة المحاولة على مستوى أعلى، مثل عندما يفشل اختبار تحديد العميل وضبطه، ما يشير إلى أنّ العميل يجب أن يعيد بدء تسلسل القراءة والتعديل والكتابة. - استخدِم
FAILED_PRECONDITION
إذا كان يجب ألا يعيد العميل المحاولة إلا بعد إصلاح حالة النظام بشكل صريح. على سبيل المثال، إذا تعذّر تنفيذ "rmdir" لأنّ الدليل غير فارغ، من الأفضل عرض القيمةFAILED_PRECONDITION
لأنّه ينبغي ألا يحاول العميل الإجراء مرة أخرى ما لم يتم حذف الملفات من الدليل.
INVALID_ARGUMENT مقارنةً بـ FAILED_PRECONDITION مقارنةً بـ OUT_OF_RANGE
في ما يلي اختبار بسيط قد يساعدك في الاختيار بين
INVALID_ARGUMENT
وFAILED_PRECONDITION
وOUT_OF_RANGE
:
- استخدِم
INVALID_ARGUMENT
إذا كانت الوسيطات تتضمّن مشكلة بغض النظر عن حالة النظام. على سبيل المثال: عنوان URL مكتوب بشكل غير صحيح - استخدِم
OUT_OF_RANGE
إذا كانت القيمة خارج النطاق بسبب حالة النظام. على سبيل المثال، يكون تاريخ_البدء قبلstart_date_restrict
. - استخدِم
FAILED_PRECONDITION
إذا كانت القيمة غير صالحة بسبب حالة النظام، ولكنّها ليست قيمةOUT_OF_RANGE
.