فهم `panic`
جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 42 من 68.
في لغة Go، تُعد panic وظيفة مدمجة تُستخدم في الحالات الاستثنائية للغاية حيث يواجه برنامجك خطأً لا يمكن إصلاحه ويجب أن يتوقف على الفور. على عكس الأخطاء العادية التي تتعامل معها بشكل طبيعي، فإن panic مخصصة للإخفاقات الكارثية التي تشير إلى وجود خطأ جوهري في منطق البرنامج أو البيئة.
عندما يتم استدعاء panic، فإنه يوقف فوراً التنفيذ العادي للدالة الحالية ويبدأ في فك مكدس الاستدعاءات (unwinding the call stack). وهذا يجعله مختلفاً تماماً عن نهج Go المعتاد المتمثل في إرجاع الأخطاء التي يمكن معالجتها بواسطة الكود المستدعي.
في لغة Go الاصطلاحية، نادراً ما يُستخدم panic. يفضل مجتمع Go بشدة معالجة الأخطاء الصريحة من خلال قيم الإرجاع بدلاً من معالجة الأخطاء القائمة على panic. قد تواجه panic في حالات مثل الوصول إلى مصفوفة خارج الحدود، أو إلغاء إشارة مؤشر nil، أو عندما تكتشف مكتبة حالة مستحيلة تشير إلى وجود خطأ برمجي.
يجب أن تتعامل معظم برامج Go مع الأخطاء بسلاسة باستخدام واجهة الخطأ القياسية التي كنت تتعلم عنها. يجب التفكير في panic فقط عندما لا توجد حقاً طريقة معقولة لبرنامجك لمواصلة التشغيل.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
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)ملخص - الأشكال والسلوكيات