Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

فهم `panic`

جزء من قسم Logic & Flow في رحلة GO على Coddy — الدرس 42 من 68.

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

عندما يتم استدعاء panic، فإنه يوقف فوراً التنفيذ العادي للدالة الحالية ويبدأ في فك مكدس الاستدعاءات (unwinding the call stack). وهذا يجعله مختلفاً تماماً عن نهج Go المعتاد المتمثل في إرجاع الأخطاء التي يمكن معالجتها بواسطة الكود المستدعي.

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

يجب أن تتعامل معظم برامج Go مع الأخطاء بسلاسة باستخدام واجهة الخطأ القياسية التي كنت تتعلم عنها. يجب التفكير في panic فقط عندما لا توجد حقاً طريقة معقولة لبرنامجك لمواصلة التشغيل.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

ورقة مرجعية

في لغة Go، تُعد panic وظيفة مدمجة للأخطاء غير القابلة للاسترداد والتي توقف تنفيذ البرنامج على الفور:

panic("something went terribly wrong")

عند استدعاء panic، فإنها توقف الوظيفة الحالية وتفكك مكدس الاستدعاءات (call stack). استخدم panic باعتدال - فقط في حالات الفشل الكارثية حيث لا يمكن للبرنامج الاستمرار. تفضل Go معالجة الأخطاء الصريحة من خلال قيم الإرجاع بدلاً من معالجة الأخطاء القائمة على panic.

تشمل حالات panic الشائعة الوصول إلى مصفوفة خارج الحدود، أو إلغاء مرجعية مؤشر فارغ (nil pointer dereference)، أو حالات البرنامج المستحيلة التي تشير إلى وجود أخطاء برمجية (bugs).

جرّب بنفسك

لا يتضمّن هذا الدرس تحدّيًا برمجيًا.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow