3.4إدارة الأخطاء وتصحيحها
الأساسي في 30 ثانية
- ثلاث عائلات من الأخطاء: الترجمة والتنفيذ والوظيفية — وهذه الأخيرة أخطرها لأن شيئًا لا ينبّه إليها.
- QUAND EXCEPTION يعترض خطأ تنفيذ؛ كما نختبر عوائد HFSQL بدلًا من افتراض نجاح كتابة.
- التصحيح = إعادة الإنتاج، العزل، فهم السبب الحقيقي، الإصلاح ثم التحقق؛ ومن جهة المستخدم، رسالة واضحة وتسجيل في السجل.
حالة مصغّرة متسلسلة — ياسين ينقذ طلبًا رغم انقطاع الاتصال
يسجّل ياسين طلب معدات كهربائية حين يصبح خادم HFSQL غير متاح. دون احتياط، يتوقف التطبيق فجأة ويفقد المستخدم إدخاله. فيحيط الكتابة بـQUAND EXCEPTION، ويختبر عائد الاستعلام، ويعرض رسالة مفهومة: «لم يُسجّل الطلب: الخادم غير متاح، تحقّق من الشبكة.» أما التفصيل التقني فيذهب إلى السجل، لا إلى الشاشة. لاحقًا يظهر مجموع خاطئ في بعض الطلبات: فيعيد ياسين إنتاج الحالة بالأسطر نفسها، ويضع نقطة توقف قبل الحساب، ويتقدّم خطوة بخطوة، ويكتشف سطرًا بلا سعر. ويسجّل المبدأ: اعترض، اختبر، سجّل، ثم أعد الإنتاج واعزل قبل الإصلاح.
حالة مستقلة لهذا القسم: تعود في الدرس والمخطط والسيناريو وتحدي 48 ساعة في القسم 3.4.
1. ثلاث عائلات من الأخطاء
الشيفرة المتينة لا تفترض أبدًا أن كل شيء سيسير على ما يرام. خطأ الترجمة يُكتشف قبل التنفيذ: خطأ نحوي، اسم غير معروف. وخطأ التنفيذ يحدث أثناء العمل: قسمة على صفر، ملف غائب، شبكة مقطوعة، صلاحيات غير كافية. أما الخطأ الوظيفي فهو الأخطر: ينفَّذ البرنامج لكن النتيجة خاطئة، ولا شيء ينبّه إليه. ومجموع خاطئ في فاتورة عند ياسين ينتمي إلى هذه العائلة.
2. الاعتراض والاختبار
يوفّر WLangage QUAND EXCEPTION لاعتراض خطأ تنفيذ واستعادة السيطرة بدلًا من ترك التطبيق ينهار. لكن الاعتراض لا يعوّض التحقق: قد تفشل كتابة HFSQL بسبب تكرار أو قيد أو قفل. لذلك يختبر ياسين عوائد الدوال، ويتوقّع سلوكًا احتياطيًا، ويعرض رسالة مفهومة — لا رمزًا تقنيًا خامًا أبدًا. أما التفصيل فيذهب إلى السجل للتشخيص.
3. منهجية تصحيح
يوفّر المصحح المدمج نقاط توقف، والتنفيذ خطوة بخطوة، وفحص المتغيرات، ومكدّس الاستدعاءات. والمنهجية لا تقل أهمية عن الأداة: أعد إنتاج المشكلة بشكل موثوق، واعزل النطاق، وافهم السبب الحقيقي لا العَرَض، ثم أصلح وتحقق من غياب الارتداد. وخطأ لا نعرف إعادة إنتاجه لا يمكن تصحيحه بيقين.
🔎 مثال ملموس — 🔎 مثال ملموس — اعتراض، تسجيل، فهم
يؤمّن ياسين تسجيل طلب ثم يتتبّع مجموعًا خاطئًا:
QUAND EXCEPTION DANS
HExecuteRequete(Req_AjoutCommande)
SI HEnDehors(Req_AjoutCommande) ALORS
Erreur("La commande n'a pas pu etre enregistree.")
FIN
FAIRE
JournalAjoute("Erreur HFSQL commande", ErreurInfo())
Info("Serveur indisponible : reessayez ou contactez le support.")
FIN
// Debogage : point d'arret avant le calcul, puis pas a pas
nTotal = CalculeTotalLignes(TAB_Lignes)
القراءة: يتلقى المستخدم إجراءً مطلوبًا، ويحتفظ السجل بالتفصيل التقني.
الدرس: نقطة التوقف والتنفيذ خطوة بخطوة يُظهران أين تصبح القيمة خاطئة.
مفردات القسم
- خطأ تنفيذ
- خطأ يحدث أثناء العمل: ملف غائب، شبكة مقطوعة، قسمة على صفر.
مثال بسيط: يفشل استعلام HFSQL عند ياسين لأن الخادم غير متاح.
ما ليس كذلك: خطأ نحوي يُبلَّغ عنه قبل التنفيذ.
رد فعل: انهيار أثناء العمل → خطأ تنفيذ.
- QUAND EXCEPTION
- آلية في WLangage تعترض خطأ تنفيذ لمعالجته بسلاسة.
مثال بسيط: يستخدمها ياسين حول كتابة الطلب.
ما ليس كذلك: ترك التطبيق يتوقف فجأة أمام المستخدم.
رد فعل: استعادة السيطرة → QUAND EXCEPTION.
- خطأ وظيفي
- حالة ينفَّذ فيها البرنامج بشكل صحيح لكنه ينتج نتيجة خاطئة.
مثال بسيط: مجموع فاتورة خاطئ بسبب سطر بلا سعر.
ما ليس كذلك: استثناء يقطع المعالجة بشكل ظاهر.
رد فعل: نتيجة خاطئة دون انهيار → خطأ وظيفي.
- نقطة توقف
- علامة تُوضع في الشيفرة لإيقاف التنفيذ وفحص الحالة عندها.
مثال بسيط: يضعها ياسين قبل CalculeTotalLignes.
ما ليس كذلك: أثر بسيط يُعرض بعد نهاية المعالجة.
رد فعل: مراقبة منطقة مشبوهة → نقطة توقف.
- تسجيل السجل
- تسجيل الأخطاء والأحداث التقنية للتشخيص لاحقًا.
مثال بسيط: يدوّن ياسين خطأ HFSQL في السجل دون عرضه على الشاشة.
ما ليس كذلك: رسالة تقنية خامة تُعرض مباشرة للمستخدم.
رد فعل: التشخيص عن بُعد → تسجيل في السجل.
في التطبيق — عمليًا — جعل الشيفرة متينة والتصحيح
- أحط العمليات الخطرة (ملف، شبكة، تحويل، حساب) واختبر عوائد HFSQL، كما يفعل ياسين.
- ضع نقطة توقف قبل المنطقة المشبوهة، وتقدّم خطوة بخطوة، وافحص المتغيرات.
- طبّق المنهجية: إعادة الإنتاج، العزل، فهم السبب الحقيقي، الإصلاح ثم التحقق.
- استبدل الرسائل التقنية برسالة مفهومة، وسجّل التفصيل للتشخيص.
سيناريو خطوة بخطوة — تتبّع مجموع خاطئ كما يفعل ياسين (4 دقائق)
1) أعد إنتاج المشكلة بالبيانات والأفعال نفسها. 2) ضع نقطة توقف قبل الحساب المشبوه وتقدّم خطوة بخطوة. 3) افحص المتغيرات: حدّد السطر الذي سعره فارغ أو محوّل بشكل خاطئ. 4) أصلح السبب الحقيقي، لا العَرَض. 5) تحقق من الحالة المصححة ومن غياب الارتداد على الطلبات الأخرى.
احتفظ بهذا المبدأ: خطأ غير قابل لإعادة الإنتاج لا يمكن تصحيحه بيقين.
قالب للنسخ واللصق — بطاقة الأخطاء والتصحيح عند ياسين
الأخطاء : ترجمة / تنفيذ / وظيفي (الأخطر)
الاعتراض : QUAND EXCEPTION + اختبار عوائد HFSQL
المستخدم : رسالة مفهومة؛ والتفصيل التقني في السجل
المنهجية : إعادة الإنتاج -> العزل -> الفهم -> الإصلاح -> التحقق
الأدوات : نقطة توقف، خطوة بخطوة، متغيرات، مكدّس الاستدعاءات، أثر
خادم لا يمكن الوصول إليه
يعترض ياسين الخطأ، ويسجّل، ويدعو المستخدم إلى إعادة المحاولة.
مجموع خاطئ
يعيد ياسين الإنتاج، ويعزل السطر بلا سعر، ويصلح السبب الحقيقي.
رسالة خامة
يستبدل ياسين «Erreur 0x8004» برسالة واضحة وقابلة للتنفيذ.
خطأ متقطع
يبحث ياسين عما يتغيّر (الحجم، الجهاز، الصلاحيات) لإعادة إنتاجه بموثوقية.
✓ ممارسات جيدة
- اختبر دائمًا عوائد العمليات الخطرة.
- أعد الإنتاج قبل الإصلاح.
- اعرض رسالة واضحة، وسجّل التفصيل.
✗ أخطاء شائعة
- افتراض نجاح كتابة HFSQL.
- إصلاح العَرَض دون السبب.
- عرض رمز تقني خام للمستخدم.
النقاط الأساسية
- الترجمة والتنفيذ والوظيفي: ثلاث عائلات بعواقب مختلفة.
- QUAND EXCEPTION يعترض؛ وعوائد HFSQL تُختبر.
- التصحيح = إعادة الإنتاج، العزل، الفهم، الإصلاح، التحقق.
- رسالة مستخدم مفهومة وتسجيل للتفصيل التقني.
تحدي 48 ساعة — طبّقه غدًا
كما يفعل ياسين، أحط عملية خطرة في تطبيقك (كتابة HFSQL، قراءة ملف، تحويل) بـQUAND EXCEPTION، واختبر عائدها، وسجّل التفصيل. اعرض رسالة مفهومة. ثم خذ خطأً حقيقيًا: أعد إنتاجه، وضع نقطة توقف، وتقدّم خطوة بخطوة، ودوّن في جملة واحدة السبب الحقيقي الذي وجدته.
- أميّز خطأ الترجمة والتنفيذ والخطأ الوظيفي.
- أعرف كيف أعترض خطأً وأختبر عائد HFSQL.
- أطبّق منهجية تصحيح من أربع خطوات.
أسئلة شائعة
كيف أعالج خطأً دون إسقاط التطبيق؟
بتوقّع العمليات الخطرة: الوصول إلى الملفات، الشبكة، قاعدة البيانات، التحويلات. أحطها بـQUAND EXCEPTION، واختبر العوائد، وتوقّع سلوكًا احتياطيًا، وسجّل التفصيل التقني. ويجب أن يتلقى المستخدم رسالة مفهومة وقابلة للتنفيذ، لا رمزًا تقنيًا خامًا أبدًا. ولعدة كتابات مترابطة، تجنّب المعاملة حالة غير متماسكة.
ما أفضل منهجية للعثور على أصل خطأ؟
إعادة الإنتاج بموثوقية، وعزل النطاق، وفهم السبب الحقيقي، ثم الإصلاح والتحقق من غياب الارتداد. والمصحح — نقطة توقف، خطوة بخطوة، فحص المتغيرات — يدعم هذه المنهجية، لا يستبدلها. وخطأ لا نعرف إعادة إنتاجه لا يمكن تصحيحه بيقين: ابدأ دائمًا بالشروط الدقيقة.
ما وظيفة آلية QUAND EXCEPTION؟