3.4 · إدارة الأخطاء وتصحيحها

المستوى 3 · المتقدم: التعمق في WLangage

3.4إدارة الأخطاء وتصحيحها

الهدف: جعل التطبيق متينًا باستخدام QUAND EXCEPTION وتحديد العيوب بالمصحح وبمنهجية موثوقة.
الوقت المقدّر: 11 دقيقة · قراءة ذاتية · إذا كان لديك 5 دقائق فقط: اقرأ «الأساسي في 30 ثانية» + المخطط.

الأساسي في 30 ثانية

  • ثلاث عائلات من الأخطاء: الترجمة والتنفيذ والوظيفية — وهذه الأخيرة أخطرها لأن شيئًا لا ينبّه إليها.
  • QUAND EXCEPTION يعترض خطأ تنفيذ؛ كما نختبر عوائد HFSQL بدلًا من افتراض نجاح كتابة.
  • التصحيح = إعادة الإنتاج، العزل، فهم السبب الحقيقي، الإصلاح ثم التحقق؛ ومن جهة المستخدم، رسالة واضحة وتسجيل في السجل.

حالة مصغّرة متسلسلة — ياسين ينقذ طلبًا رغم انقطاع الاتصال

يسجّل ياسين طلب معدات كهربائية حين يصبح خادم HFSQL غير متاح. دون احتياط، يتوقف التطبيق فجأة ويفقد المستخدم إدخاله. فيحيط الكتابة بـQUAND EXCEPTION، ويختبر عائد الاستعلام، ويعرض رسالة مفهومة: «لم يُسجّل الطلب: الخادم غير متاح، تحقّق من الشبكة.» أما التفصيل التقني فيذهب إلى السجل، لا إلى الشاشة. لاحقًا يظهر مجموع خاطئ في بعض الطلبات: فيعيد ياسين إنتاج الحالة بالأسطر نفسها، ويضع نقطة توقف قبل الحساب، ويتقدّم خطوة بخطوة، ويكتشف سطرًا بلا سعر. ويسجّل المبدأ: اعترض، اختبر، سجّل، ثم أعد الإنتاج واعزل قبل الإصلاح.

حالة مستقلة لهذا القسم: تعود في الدرس والمخطط والسيناريو وتحدي 48 ساعة في القسم 3.4.

1. ثلاث عائلات من الأخطاء

الشيفرة المتينة لا تفترض أبدًا أن كل شيء سيسير على ما يرام. خطأ الترجمة يُكتشف قبل التنفيذ: خطأ نحوي، اسم غير معروف. وخطأ التنفيذ يحدث أثناء العمل: قسمة على صفر، ملف غائب، شبكة مقطوعة، صلاحيات غير كافية. أما الخطأ الوظيفي فهو الأخطر: ينفَّذ البرنامج لكن النتيجة خاطئة، ولا شيء ينبّه إليه. ومجموع خاطئ في فاتورة عند ياسين ينتمي إلى هذه العائلة.

2. الاعتراض والاختبار

يوفّر WLangage QUAND EXCEPTION لاعتراض خطأ تنفيذ واستعادة السيطرة بدلًا من ترك التطبيق ينهار. لكن الاعتراض لا يعوّض التحقق: قد تفشل كتابة HFSQL بسبب تكرار أو قيد أو قفل. لذلك يختبر ياسين عوائد الدوال، ويتوقّع سلوكًا احتياطيًا، ويعرض رسالة مفهومة — لا رمزًا تقنيًا خامًا أبدًا. أما التفصيل فيذهب إلى السجل للتشخيص.

3. منهجية تصحيح

يوفّر المصحح المدمج نقاط توقف، والتنفيذ خطوة بخطوة، وفحص المتغيرات، ومكدّس الاستدعاءات. والمنهجية لا تقل أهمية عن الأداة: أعد إنتاج المشكلة بشكل موثوق، واعزل النطاق، وافهم السبب الحقيقي لا العَرَض، ثم أصلح وتحقق من غياب الارتداد. وخطأ لا نعرف إعادة إنتاجه لا يمكن تصحيحه بيقين.

خطأ شائع في الفهم: «الخطأ الوظيفي يُرى دائمًا؛ وQUAND EXCEPTION يكفي لحماية كل شيء؛ والتصحيح يعني تعديل الشيفرة عشوائيًا حتى يختفي العَرَض». لا، ثلاثة أخطاء. الخطأ الوظيفي غير مرئي بالضبط: يعمل البرنامج وينتج نتيجة خاطئة. وQUAND EXCEPTION يعترض خطأ تنفيذ، لكن يجب أيضًا اختبار عوائد HFSQL وتوقّع بديل. والعشوائية ليست منهجية: نعيد الإنتاج، ونعزل، ونفهم السبب الحقيقي، ثم نصلح ونتحقق.
منهجية التصحيح إعادة الإنتاج، العزل، الفهم، الإصلاح والتحقق. إعادة الإنتاج حالةموثوقةالعزل النطاقوالمتغيراتالفهم السبب الحقيقيالإصلاح ثم التحقق
إعادة الإنتاج، العزل، الفهم، الإصلاح والتحقق.
نص المخطط (SEO / قارئات الشاشة / الترجمة): 1) يرى ياسين، مطوّر WinDev في شركة صغيرة لتجارة المعدات الكهربائية في وهران، كتابة طلب تفشل حين يكون خادم HFSQL غير متاح. 2) يحيط العملية بـQUAND EXCEPTION، ويختبر عائد الاستعلام، ويسجّل التفصيل التقني في السجل، ويعرض رسالة مفهومة للمستخدم. 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 في السجل دون عرضه على الشاشة.

ما ليس كذلك: رسالة تقنية خامة تُعرض مباشرة للمستخدم.

رد فعل: التشخيص عن بُعد → تسجيل في السجل.

في التطبيق — عمليًا — جعل الشيفرة متينة والتصحيح

  1. أحط العمليات الخطرة (ملف، شبكة، تحويل، حساب) واختبر عوائد HFSQL، كما يفعل ياسين.
  2. ضع نقطة توقف قبل المنطقة المشبوهة، وتقدّم خطوة بخطوة، وافحص المتغيرات.
  3. طبّق المنهجية: إعادة الإنتاج، العزل، فهم السبب الحقيقي، الإصلاح ثم التحقق.
  4. استبدل الرسائل التقنية برسالة مفهومة، وسجّل التفصيل للتشخيص.
يقاوم تطبيقك المفاجآت، ويُبلّغ المستخدم بشكل صحيح، ويملك منهجية موثوقة لإصلاح العيوب.

سيناريو خطوة بخطوة — تتبّع مجموع خاطئ كما يفعل ياسين (4 دقائق)

1) أعد إنتاج المشكلة بالبيانات والأفعال نفسها. 2) ضع نقطة توقف قبل الحساب المشبوه وتقدّم خطوة بخطوة. 3) افحص المتغيرات: حدّد السطر الذي سعره فارغ أو محوّل بشكل خاطئ. 4) أصلح السبب الحقيقي، لا العَرَض. 5) تحقق من الحالة المصححة ومن غياب الارتداد على الطلبات الأخرى.

احتفظ بهذا المبدأ: خطأ غير قابل لإعادة الإنتاج لا يمكن تصحيحه بيقين.

قالب للنسخ واللصق — بطاقة الأخطاء والتصحيح عند ياسين

الأخطاء     : ترجمة / تنفيذ / وظيفي (الأخطر)
الاعتراض    : QUAND EXCEPTION + اختبار عوائد HFSQL
المستخدم    : رسالة مفهومة؛ والتفصيل التقني في السجل
المنهجية    : إعادة الإنتاج -> العزل -> الفهم -> الإصلاح -> التحقق
الأدوات     : نقطة توقف، خطوة بخطوة، متغيرات، مكدّس الاستدعاءات، أثر

خادم لا يمكن الوصول إليه

يعترض ياسين الخطأ، ويسجّل، ويدعو المستخدم إلى إعادة المحاولة.

مجموع خاطئ

يعيد ياسين الإنتاج، ويعزل السطر بلا سعر، ويصلح السبب الحقيقي.

رسالة خامة

يستبدل ياسين «Erreur 0x8004» برسالة واضحة وقابلة للتنفيذ.

خطأ متقطع

يبحث ياسين عما يتغيّر (الحجم، الجهاز، الصلاحيات) لإعادة إنتاجه بموثوقية.

✓ ممارسات جيدة

  • اختبر دائمًا عوائد العمليات الخطرة.
  • أعد الإنتاج قبل الإصلاح.
  • اعرض رسالة واضحة، وسجّل التفصيل.

✗ أخطاء شائعة

  • افتراض نجاح كتابة HFSQL.
  • إصلاح العَرَض دون السبب.
  • عرض رمز تقني خام للمستخدم.

النقاط الأساسية

  • الترجمة والتنفيذ والوظيفي: ثلاث عائلات بعواقب مختلفة.
  • QUAND EXCEPTION يعترض؛ وعوائد HFSQL تُختبر.
  • التصحيح = إعادة الإنتاج، العزل، الفهم، الإصلاح، التحقق.
  • رسالة مستخدم مفهومة وتسجيل للتفصيل التقني.

تحدي 48 ساعة — طبّقه غدًا

كما يفعل ياسين، أحط عملية خطرة في تطبيقك (كتابة HFSQL، قراءة ملف، تحويل) بـQUAND EXCEPTION، واختبر عائدها، وسجّل التفصيل. اعرض رسالة مفهومة. ثم خذ خطأً حقيقيًا: أعد إنتاجه، وضع نقطة توقف، وتقدّم خطوة بخطوة، ودوّن في جملة واحدة السبب الحقيقي الذي وجدته.

قائمة الخروج من القسم
  • أميّز خطأ الترجمة والتنفيذ والخطأ الوظيفي.
  • أعرف كيف أعترض خطأً وأختبر عائد HFSQL.
  • أطبّق منهجية تصحيح من أربع خطوات.
تقييم ذاتي 1-5: هل أختبر العوائد بدلًا من الافتراض؟تقييم ذاتي 1-5: هل أبحث عن السبب الحقيقي، لا العَرَض؟

أسئلة شائعة

كيف أعالج خطأً دون إسقاط التطبيق؟

بتوقّع العمليات الخطرة: الوصول إلى الملفات، الشبكة، قاعدة البيانات، التحويلات. أحطها بـQUAND EXCEPTION، واختبر العوائد، وتوقّع سلوكًا احتياطيًا، وسجّل التفصيل التقني. ويجب أن يتلقى المستخدم رسالة مفهومة وقابلة للتنفيذ، لا رمزًا تقنيًا خامًا أبدًا. ولعدة كتابات مترابطة، تجنّب المعاملة حالة غير متماسكة.

ما أفضل منهجية للعثور على أصل خطأ؟

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

تحقّق من فهمك

ما وظيفة آلية QUAND EXCEPTION؟

موارد إضافية (اختياري، للتعمّق أكثر)

اختبار المستوى 3أسئلة جديدة وأصعب للتحقق من مكتسباتك