كتلة 'try...catch'
جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 53 من 68.
عندما يواجه كود PHP الخاص بك مشكلات قد تتسبب في توقفه عن العمل، فأنت بحاجة إلى طريقة للتعامل مع هذه المواقف بسلاسة. توفر كتلة try...catch نهجاً منظماً للتعامل مع الاستثناءات (exceptions) - وهي كائنات خطأ خاصة تمثل مشكلات خطيرة في الكود الخاص بك.
تحتوي كتلة try على كود قد يفشل أو يطرح استثناءً. إذا حدث استثناء داخل هذه الكتلة، يتوقف PHP فوراً عن تنفيذ الكود المتبقي في كتلة try وينتقل إلى كتلة catch المقابلة. تقوم كتلة catch بمعالجة الاستثناء، مما يسمح للسكربت الخاص بك بمواصلة التشغيل بدلاً من الانهيار.
<?php
try {
// الكود الذي قد يطرح استثناءً
$result = riskyFunction();
echo "Success!";
} catch (Exception $e) {
// معالجة الاستثناء
echo "An error occurred: " . $e->getMessage();
}
?>تستقبل كتلة catch كائن Exception يحتوي على معلومات حول الخطأ الذي حدث. يمكنك الوصول إلى رسالة الخطأ باستخدام طريقة getMessage(). يمنع هذا النهج البرنامج النصي بالكامل من التوقف عند حدوث خطأ ما، مما يمنحك التحكم في كيفية التعامل مع الأخطاء وما يراه المستخدمون.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهلستتلقى مدخلاً واحداً: رقماً يمثل قيمة العمر. قد يكون المدخل رقماً سالباً، وهو ما سيكون غير صالح للعمر.
اقرأ المدخل، وقم بتحويله إلى عدد صحيح، وأنشئ كتلة try...catch. داخل كتلة try، تحقق مما إذا كان العمر سالباً. إذا كان سالباً، قم برمي Exception جديد مع الرسالة "Age cannot be negative". إذا كان العمر صالحاً (صفراً أو موجباً)، قم بطباعة "Valid age: " متبوعاً بقيمة العمر.
في كتلة catch، قم بمعالجة الاستثناء عن طريق طباعة "Error: " متبوعة برسالة الاستثناء باستخدام التابع getMessage().
تنسيق المدخلات: سطر واحد يحتوي على عدد صحيح (مثال: 25 أو -5)
المخرجات المتوقعة:
- إذا كان العمر صالحاً:
Valid age:متبوعاً بقيمة العمر - إذا كان العمر سالباً:
Error: Age cannot be negative
ورقة مرجعية
تتعامل كتلة try...catch مع الاستثناءات في PHP، مما يمنع البرامج النصية من الانهيار عند حدوث أخطاء.
البنية الأساسية:
<?php
try {
// الكود الذي قد يطرح استثناءً
$result = riskyFunction();
echo "Success!";
} catch (Exception $e) {
// التعامل مع الاستثناء
echo "An error occurred: " . $e->getMessage();
}
?>تحتوي كتلة try على كود قد يكون إشكالياً. في حال حدوث استثناء، ينتقل PHP إلى كتلة catch، التي تستقبل كائن Exception. استخدم getMessage() للوصول إلى رسالة الخطأ.
يمكنك طرح الاستثناءات يدوياً باستخدام:
throw new Exception("Custom error message");جرّب بنفسك
<?php
// قراءة المدخلات
$age = intval(fgets(STDIN));
// TODO: اكتب كودك أدناه
// قم بإنشاء كتلة try...catch للتحقق من صحة العمر
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1الدوال المتقدمة
الدوال المجهولةالـ Closures وكلمة 'use'دوال السهمدوال الـ Callbackاستخدام 'call_user_func'دوال المتغيراتالتمرير بالمرجعالدوال العوديةمراجعة: مزيج الدوال4المصفوفات متعددة الأبعاد
إنشاء مصفوفة ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادتعديل عناصر المصفوفة ثنائية الأبعادالتكرار باستخدام الحلقات المتداخلةالمصفوفات الترابطية ثنائية الأبعادمراجعة: تمرين الشبكة البسيطة2معالجة المصفوفات المتقدمة
الإضافة باستخدام 'array_push'الحذف باستخدام 'array_pop'الإضافة باستخدام 'array_unshift'الحذف باستخدام 'array_shift'دمج المصفوفات المفهرسةدمج المصفوفات الترابطيةالاستخراج باستخدام 'array_slice'القيم باستخدام 'in_array'المفاتيح باستخدام 'array_search'مراجعة: تمرين قائمة التشغيل5سجل درجات الطلاب
إعداد المشروع: هيكل البياناتإضافة طالب جديدإضافة درجة لطالبحساب متوسط الطالبإيجاد الطالب المتفوقإنشاء تقرير الدرجات8معالجة الأخطاء والاستثناءات
فهم أخطاء PHPكتلة 'try...catch'كتلة 'finally'إطلاق استثناءإنشاء استثناء مخصصاستخدام استثناء مخصصمراجعة: التحقق من صحة المدخلات3ترتيب المصفوفات
ترتيب المصفوفات المفهرسة تصاعدياًترتيب المصفوفات المفهرسة تنازلياًترتيب المصفوفات الترابطية حسب القيمةترتيب المصفوفات الترابطية حسب المفتاحالترتيب بالترتيب الطبيعيالترتيب المخصص باستخدام 'usort'مراجعة: ترتيب لوحة المتصدرين