فهم `panic`
جزء من قسم المنطق وتدفق التنفيذ في رحلة GO على Coddy. الدرس 42 من 68.
في Go، تُعدّ panic دالةً مضمّنة تُستخدم في المواقف الاستثنائية حقًا، عندما يواجه برنامجك خطأً لا يمكن استرداده ويجب أن يتوقف فورًا. وعلى خلاف الأخطاء العادية التي تعالجها بسلاسة، تُحجز panic للإخفاقات الكارثية التي تشير إلى وجود خلل جوهري في منطق برنامجك أو بيئته.
عند استدعاء panic، يوقف التنفيذ العادي للدالة الحالية فورًا ويبدأ في تفكيك مكدس الاستدعاءات. وهذا يجعله مختلفًا جدًا عن النهج المعتاد في Go المتمثل في إرجاع الأخطاء التي يمكن للتعليمات البرمجية المستدعية معالجتها.
في لغة Go الاصطلاحية، نادرًا ما يُستخدم panic. يفضّل مجتمع Go بشدة معالجة الأخطاء بشكل صريح من خلال قيم الإرجاع بدلًا من معالجة الأخطاء القائمة على panic. قد تصادف panic في حالات مثل الوصول إلى مصفوفة خارج حدودها، أو إلغاء الإشارة إلى مؤشر nil، أو عندما تكتشف مكتبة حالة مستحيلة تشير إلى وجود خطأ برمجي.
ينبغي لمعظم برامج Go التعامل مع الأخطاء بسلاسة باستخدام واجهة الأخطاء القياسية التي كنت تتعلّم عنها. لا ينبغي التفكير في panic إلا عندما لا توجد حقًا أي طريقة معقولة لمواصلة برنامجك العمل.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1تدفق التحكم المتقدم
جملة Switch مع `fallthrough`الخروج من الحلقات المتداخلةالاستمرار في حلقة محددةجملة `goto`ملخص - التحكم المتقدم في الحلقات2الـ Structs والميثودز (Methods)
تعريف الـ Methods على الـ Structsالـ Value Receiversالـ Pointer Receiversاختيار الـ Receiversالـ Methods مقابل الـ Functionsملخص - سلوك الـ Struct5تعمق في الـ Maps
Maps من نوع Structsالـ Pointers كقيم في الـ Mapsالتحقق من الـ Nil Mapsمقارنة الـ Mapsمراجعة - عداد تكرار الكلمات3الواجهات (الأساسيات)
ما هي الواجهة؟تعريف الواجهةتطبيق الواجهةاستخدام أنواع الواجهاتالواجهة الفارغةتأكيدات النوع (Type Assertions)تبديل النوع (Type Switch)ملخص - الأشكال والسلوكياتتدرّب بنفسك: مترجم Go عبر الإنترنت