المسارات
/
Go
Go
/
التمارين
/
معالجة الأخطاء
معالجة الأخطاء

معالجة الأخطاء

متوسط

التعليمات

نفّذ أنواعًا مختلفة من معالجة الأخطاء وإدارة الموارد.

من النقاط المهمة في البرمجة كيفية التعامل مع الأخطاء وإغلاق الموارد حتى عند حدوث أخطاء.

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

التنفيذ

إذا كنت جديدًا على أخطاء Go أو على panic، فنوصي بقراءة التوثيق حول هذين الموضوعين أولًا للحصول على السياق.

في هذا التمرين سيُطلب منك تعريف دالة Use(opener ResourceOpener, input string) error تفتح موردًا، وتستدعي Frob(input) على المورد الناتج، ثم تغلق ذلك المورد (في جميع الحالات). ينبغي أن تتعامل دالتك مع الأخطاء وpanic بشكل صحيح.

سيكون ResourceOpener opener دالة يمكنك استدعاؤها مباشرةً عبر opener() في محاولة لـ«فتح» المورد. وهي تُرجع قيمة Resource وقيمة خطأ على الطريقة الاصطلاحية في Go:

راجع ملف common.go للاطلاع على تعريفات Resource وResourceOpener وFrobError وTransientError. ستُعرّف حلّك في الحزمة نفسها التي تضم common.go وerror_handling_test.go: «erratum». وهذا سيجعل تلك الأنواع متاحة للاستخدام في حلّك.

ستكون هناك بضعة مواضع في دالتك Use قد تحدث فيها أخطاء:

  • عند استدعاء دالة ResourceOpener التي مُرّرت إلى Use كمعامل أول، قد تفشل بخطأ من النوع TransientError؛ فإن حدث ذلك فواصل محاولة فتح المورد. أما إذا كان خطأً من نوع آخر، فأرجِعه من دالتك Use.

  • عند استدعاء دالة Frob على Resource التي أرجعتها دالة ResourceOpener، فقد يحدث panic مع FrobError (أو نوع آخر من الأخطاء). وإذا كان فعلًا FrobError، فسيتعيّن عليك استدعاء دالة Defrob الخاصة بالمورد مستخدمًا المتغير .defrobTag الخاص بـFrobError الذي أطلقه panic كمدخل لدالة Defrob. وفي كلتا الحالتين ينبغي أن تُرجع Use الخطأ.

  • لاحظ أيضًا: إذا فُتح Resource بنجاح، فتأكد من استدعاء دالة Close الخاصة به مرة واحدة بالضبط مهما حدث (حتى لو وقعت أخطاء).

يمكن اختبار أنواع أخطاء محددة باستخدام تأكيدات النوع. وقد تحتاج أيضًا إلى الاطلاع على القيم المُرجَعة المُسمّاة كطريقة مفيدة لإرجاع معلومات الخطأ من التعافي بعد panic.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Go Exercism

مستعد لبدء معالجة الأخطاء؟

سجّل في Exercism لتتعلّم وتتقن Go عبر 34 مفهومًا165 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.