يمكن عرض رموز الحالة التالية في استجابات gRPC. ينطبق ذلك على جميع إصدارات gRPC والموثّقة على هذا الموقع الإلكتروني.
الرمز | الحالة | Notes |
---|---|---|
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_ لذلك مقابل FAILED_PREStatus في مقابل OUT_OF_RANGE
في ما يلي اختبار أساسي قد يساعدك في الاختيار بين
INVALID_ARGUMENT
وFAILED_PRECONDITION
وOUT_OF_RANGE
:
- استخدِم
INVALID_ARGUMENT
إذا كانت الوسيطات إشكالية بغض النظر عن حالة النظام. على سبيل المثال: عنوان URL مكتوب بشكلٍ غير صحيح - يمكنك استخدام
OUT_OF_RANGE
إذا كانت القيمة خارج النطاق بسبب حالة النظام. على سبيل المثال، يقع تاريخ start_date قبلstart_date_restrict
. - يمكنك استخدام
FAILED_PRECONDITION
إذا كانت القيمة غير صالحة بسبب حالة النظام، لكنّها ليست قيمةOUT_OF_RANGE
.