تكرار السؤال: …
الإجابة المختصرة
ترث فئات Exception و Error من الواجهة العامة Throwable، مما يتيح التقاط أخطاء المحرك الجسيمة (Fatal Errors) بكتلة try/catch.
الشرح
قبل PHP 7، كانت الأخطاء الفادحة (Fatal Errors) مثل استدعاء دالة غير موجودة توقف السكريبت فوراً دون إمكانية التقاطها برمجياً. في الأنظمة الحديثة، تحولت معظم هذه الأخطاء إلى فئات ترث من Error (مثل TypeError وParseError)، لكن بعض الأخطاء الفادحة مثل استنفاد الذاكرة (Allowed memory size exhausted) أو تجاوز max_execution_time لا تزال غير قابلة للالتقاط ويجب رصدها عبر register_shutdown_function و error_get_last(). بالتقاط Throwable، تستطيع حماية التطبيق من الانهيار وتسجيل الخطأ وإعادة استجابة منسقة للمستخدم.
مثال بالكود
try {
nonExistentFunction();
} catch (Throwable $e) {
// يلتقط الاستثناءات والأخطاء الفادحة معاً
error_log($e->getMessage());
}أخطاء شائعة
- كتابة فئات مخصصة تنفذ واجهة Throwable مباشرة؛ المحرك يمنع ذلك ويشترط الوراثة من Exception أو Error.