معالجة الأخطاء
معالجة الأخطاء
Section titled “معالجة الأخطاء”كنوز توفر آليات متعددة لمعالجة الأخطاء: جرب/التقط/أخيرا وألق ونوع نتيجة.
جرب وأخيرا
Section titled “جرب وأخيرا”جرب { اطبع("داخل كتلة جرب") اطبع("تنفيذ طبيعي")} أخيرا { اطبع("تنفيذ أخيرا دائماً")}جرب والتقط
Section titled “جرب والتقط”جرب { اطبع("قبل رمي الخطأ") ألق "خطأ تجريبي!" اطبع("لن يُطبع هذا")} التقط خ { اطبع("تم التقاط الخطأ!")}جرب والتقط وأخيرا
Section titled “جرب والتقط وأخيرا”جرب { اطبع("محاولة عملية خطرة") ألق "فشل العملية"} التقط خ_العملية { اطبع("معالجة الخطأ")} أخيرا { اطبع("تنظيف الموارد")}رمي الأخطاء (ألق)
Section titled “رمي الأخطاء (ألق)”ألق "رسالة الخطأ"جرب متداخل
Section titled “جرب متداخل”جرب { اطبع("الكتلة الخارجية")
جرب { اطبع("الكتلة الداخلية") ألق "خطأ داخلي" } التقط خ_داخلي { اطبع("معالجة الخطأ الداخلي") }
اطبع("استمرار الكتلة الخارجية")} التقط خ_خارجي { اطبع("معالجة الخطأ الخارجي")} أخيرا { اطبع("تنظيف")}نوع النتيجة (Result)
Section titled “نوع النتيجة (Result)”طريقة أنيقة للتعامل مع العمليات التي قد تفشل:
دالة قسمة(أ: صحيح, ب: صحيح) -> اختياري<صحيح> { إذا ب == 0 { أرجع عدم } أرجع بعض(أ / ب)}
// الاستخدامدع ن1 = قسمة(20, 4) // بعض(5)دع ن2 = قسمة(10, 0) // عدمالنوع الاختياري (Optional)
Section titled “النوع الاختياري (Optional)”للقيم التي قد تكون غير موجودة:
دالة اقسم(أ: صحيح, ب: صحيح) -> اختياري<صحيح> { إذا ب == 0 { أرجع عدم } أرجع بعض(أ / ب)}
// الاستخدامدع ن = اقسم(10, 2)
// التحقق من الوجودإذا ن.يوجد() { اطبع("النتيجة موجودة")}أفضل الممارسات
Section titled “أفضل الممارسات”المثال الكامل
Section titled “المثال الكامل”// دالة قسمة مع نتيجةدالة قسمة(أ: صحيح, ب: صحيح) -> اختياري<صحيح> { إذا ب == 0 { أرجع عدم } أرجع بعض(أ / ب)}
// دالة تحقق العمردالة تحقق_عمر(عمر: صحيح) -> منطقي { إذا عمر < 0 { أرجع خطأ } وإلا إذا عمر > 150 { أرجع خطأ } أرجع صح}
دالة رئيسية() { اطبع("=== معالجة الأخطاء ===")
// جرب/أخيرا اطبع("=== جرب/أخيرا ===") جرب { اطبع("تنفيذ طبيعي") } أخيرا { اطبع("أخيرا دائماً") }
// جرب/التقط اطبع("=== جرب/التقط ===") جرب { ألق "خطأ تجريبي" } التقط خ { اطبع("تم التقاط الخطأ") }
// جرب/التقط/أخيرا اطبع("=== جرب/التقط/أخيرا ===") جرب { ألق "فشل" } التقط خ { اطبع("معالجة") } أخيرا { اطبع("تنظيف") }
// نوع النتيجة اطبع("=== نوع النتيجة ===") دع ن1 = قسمة(20, 4) دع ن2 = قسمة(10, 0)
// التحقق من العمر اطبع("=== التحقق من العمر ===") دع ت1 = تحقق_عمر(25) دع ت2 = تحقق_عمر(-5)
إذا ت1 { اطبع("العمر 25 صالح") }
إذا !ت2 { اطبع("العمر -5 غير صالح") }
اطبع("=== انتهى الاختبار ===")}