الترحيل إلى معالجة الأخطاء (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)ما لم يتغير
رابط إلى قسم «ما لم يتغير»الفهرس خارج الحدود، والقسمة على صفر، والتجاوز، والمفتاح الغائب من القاموس، وعدد(كسر) خارج المدى، ونفاد الذاكرة في كل حجز
إلا حاول_احجز: أخطاء تشغيل كما كانت (أخطاء برمجة لا حالات متوقعة).