تخطَّ إلى المحتوى

الترحيل إلى معالجة الأخطاء (0.7.0)

منقول من الكتاب المرجعي: docs/handbook/migration/errors.md · الإيداع 7a52f6c

منذ 0.7.0 (الخيار أ في errors-design.md (وثيقة في مستودع المجمّع)). كسر بلا طبقة توافق: برنامج كان يستدعي دالة صارت !نوع لا يُترجم حتى يعالج فشلها. ورسالة الترجمة تقول ما يُكتب.

كان صار الإصلاح الأقصر
ن = ملفات.اقرأ_ملف(م) يوقف البرنامج إن فشل !نص ن = جرّب ملفات.اقرأ_ملف(م) (في دالة !نوع، أو المستوى الأعلى)
ملفات.اكتب_ملف(م, ن) جملة !فراغ جرّب ملفات.اكتب_ملف(م, ن)
الحق_بملف، اقرأ_سطور، سرد_مجلد، انشئ_مجلد، احذف_ملف !نوع كما سبق
عدد("12") وكسر("2.5") !عدد و!كسر عدد(ن) والا 0، أو جرّب عدد(ن)
ش = حاول_احجز(...) ثم ش == لاشيء !شريحة ش = حاول_احجز(...) والا خ: ثم ما يُفعل
جرب ووالا وخاتمه_عند_خطأ أسماء عادية كلمات محجوزة غيّر الاسم
رسالة «لا يمكن تحويل النص ‘س’ إلى عدد» برمز 3 لا تحدث إلا بـجرّب في المستوى الأعلى: «خطأ لم يُعالَج: صيغة_خاطئة» برمز 3 عالج الخطأ

قبل (0.6):

استورد ملفات
ن = ملفات.اقرأ_ملف("ارقام.txt")
مج = 0
لكل سطر في تقسيم(ن, "\n"):
مج += عدد(سطر)
اطبع(مج)

بعد:

مثال
استورد ملفات
جرّب ملفات.اكتب_ملف("ارقام.txt", "4\n5\nس\n")
داله مجموع(مسار نص) !عدد:
مج = 0
لكل سطر في جرّب ملفات.اقرأ_سطور(مسار):
مج += عدد(سطر) والا 0
ارجع مج
اطبع(مجموع("ارقام.txt") والا -1, " ", مجموع("غائب.txt") والا -1)
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
9 -1

الفهرس خارج الحدود، والقسمة على صفر، والتجاوز، والمفتاح الغائب من القاموس، وعدد(كسر) خارج المدى، ونفاد الذاكرة في كل حجز إلا حاول_احجز: أخطاء تشغيل كما كانت (أخطاء برمجة لا حالات متوقعة).