لسوء الحظ ، تتضمن تطبيقات البناء الترميز. بغض النظر عن مدى دقة كتابة / تصحيح برنامجك ، سيكون من المستحيل تخيل كل موقف يمكن أن يحدث خطأ. قد يحاول المستخدم عديم الخبرة ، على سبيل المثال ، فتح ملف غير موجود أو إدخال قيمة سيئة في حقل البيانات.
يرتكب المستخدمون أخطاء ويجب أن نكون مستعدين للتعامل مع هذه الأخطاء ومنعها أينما ومتى أمكن ذلك.
أخطاء ، استثناءات؟
الاستثناء بشكل عام هو حالة خطأ أو حدث آخر يقطع التدفق الطبيعي للتنفيذ في تطبيق. عندما ينتج خطأ عن معالجة سطر من التعليمات البرمجية ، تقوم دلفي بإنشاء (رفع) سلالة كائن من TObject تسمى كائن الاستثناء.
كتل حراسة
يستجيب التطبيق لاستثناء إما عن طريق تنفيذ بعض رموز الإنهاء أو معالجة الاستثناء أو كليهما. طريقة لتمكين ملائمة الخطأ / الاستثناء داخل رمز معين ، يجب أن يحدث الاستثناء داخل كتلة من البيانات المحمية. يبدو الرمز العام:
محاولة. {كتلة محمية من الكود} إلا. تبدأ. نهاية {block block-handles SomeException} ؛ النهاية؛
أ حاول / باستثناء يقوم البيان بتنفيذ العبارات الموجودة في كتلة التعليمات البرمجية المحمية. إذا تم تنفيذ العبارات دون إثارة أي استثناءات ، فسيتم تجاهل كتلة الاستثناء ، ويتم تمرير التحكم إلى العبارة التي تلي الكلمة الأساسية النهائية.
مثال:
... صفر: = 0 ؛ محاولة. دمية: = 10 / صفر ؛ إلا. على EZeroDivide. MessageDlg ("لا يمكن القسمة على صفر!" ، mtError ، [mbOK] ، 0) ؛ النهاية؛...
حماية الموارد
عندما يكتسب قسم من التعليمات البرمجية موردًا ، غالبًا ما يكون من الضروري التأكد من تحرير المورد مرة أخرى (أو قد تحصل على تسريب ذاكرة) ، بغض النظر عما إذا كان الكود يكتمل بشكل طبيعي أو يقطعه استثناء. في هذه الحالة ، يستخدم بناء الجملة أخيرا الكلمة الرئيسية ويبدو:
{بعض التعليمات البرمجية لتخصيص الموارد} محاولة. {كتلة محمية من الكود} أخيرا. {termination blok - code to free resources} النهاية؛
مثال:
... AboutBox: = TAboutBox. إنشاء (لا شيء) ؛ محاولة. AboutBox. ShowModal ؛ أخيرا. AboutBox. إطلاق سراح؛ النهاية؛...
تطبيق. OnException
إذا لم يعالج تطبيقك الخطأ الذي تسبب في الاستثناء ، فستستخدم Delphi معالج الاستثناء الافتراضي الخاص بها - سيظهر مربع رسالة فقط. يمكنك التفكير في كتابة التعليمات البرمجية في حدث OnException لكائن TApplication ، من أجل اعتراض الأخطاء على مستوى التطبيق.
كسر الاستثناءات
عند بناء برنامج بمعالجة استثنائية ، قد لا ترغب في كسر دلفي للاستثناءات. هذه ميزة رائعة إذا كنت تريد أن توضح دلفي مكان حدوث الاستثناء ؛ ومع ذلك ، يمكن أن يكون مزعجًا عند اختبار معالجة الاستثناء الخاصة بك.
بضع كلمات أخيرة
تهدف هذه المقالة إلى إعطائك نظرة سريعة على الاستثناءات. لمزيد من المناقشة حول معالجة الاستثناء ، خذ بعين الاعتبار في التعامل مع الاستثناءات في معالجة استثناء دلفي، باستخدام أداة مثل تحطم دلفي / التعامل مع الاستثناءات مع الإبلاغ عن الأخطاء وبعض المقالات التالية ذات الصلة: