1. مصدر الشذوذ.
في تطبيق Delphi ، من المرجح أن تنشئ المواقف التالية استثناءات.
(1) معالجة الملفات
(2) تخصيص الذاكرة
(3) موارد Windows
(4) إنشاء كائنات ونماذج أثناء وقت التشغيل
(5) تعارض نظام الأجهزة ونظام التشغيل
؟
2. الاستثناء معالجة.
(1) حاول ... باستثناء ... نهاية ؛
عندما يحدث استثناء في الكود في هيئة المحاولة ، سيتحول النظام إلى الجزء باستثناء معالجة الاستثناء. هذه هي واحدة من الطرق الأساسية التي يتعامل بها Delphi.
؟
(2) حاول ... أخيرًا ... نهاية ؛
يتم استخدام بنية معالجة الاستثناء هذه بشكل عام لحماية تخصيص موارد Windows والجوانب الأخرى.
على عكس المحاولة ... باستثناء ... النهاية ، يتم دائمًا تنفيذ الجزء الأخير من الهيكل.
؟
(3) لا توجد محاولة ... باستثناء ... أخيرًا ... بنية النهاية للتعامل مع استثناءات وحماية هياكل تخصيص الموارد. أخيرًا ... بنية نهاية ، وبالتالي إدراك التعامل مع الاستثناءات ، وحماية تخصيص الموارد.
؟
؟
3. معالجة دقيقة للاستثناءات.
(1) تحديد استثناء.
في دلفي ، كل استثناء هو فئة مشتقة [2] من فئة الاستثناء [1] . لذلك ، فإن تحديد استثناء هو تحديد فئة مشتقة من فئة الاستثناء.
اكتب emyexception = class (استثناء) ؛
بالطبع ، يمكن أن تكون الفئة الأساسية استثناءً أو أي مستوى من الاستثناءات.
؟
(2) رمي استثناء في البرنامج.
إن إلقاء الاستثناءات وفقًا للمواقف المختلفة هو الوضع الأساسي لاستخدام الاستثناءات. في دلفي ، يتم تنفيذها بواسطة بيان رفع .
[بناء جملة] رفع استثناء الفئة. إنشاء ("الوصف الافتراضي للاستثناء") ؛
؟
(3) استثناءات أكثر دقة في المحاولة ... باستثناء ... نهاية.
استخدم بنية ON : فئة الاستثناء ... للتعامل مع الاستثناءات التي ألقيتها فئة استثناء محددة في الجسم DO.
؟
4. استثناء التصحيح.
في Delphi IDE ، قم بإلغاء تحديد حالة التحقق من خانة الاختيار المدمجة في "خيارات التصحيح" (يمكنك استخدام أدوات القائمة -> خيارات التصحيح ... للوصول إليها).
؟
5. التفسير التكميلي للتشوهات.
(1) قد ينتج كل برنامج أخطاء! هذه ظاهرة لا جدال فيها والقانون في صناعة البرمجيات. في الواقع ، يمكن للهيكل التقليدي ... حل جميع الأخطاء تمامًا.
الإجابة واضحة: توفر الاستثناءات طريقة أكثر مرونة وفتحًا ، مما يسمح للمبرمجين اللاحقين بالتعامل مع هذا الخطأ بناءً على الشروط الفعلية بدلاً من استخدام نتائج المعالجة المحددة مسبقًا. في الواقع ، أعتقد أن هذا هو جوهر آلية الاستثناء.
[1] تعريف فئة الاستثناء موجود في وحدة Sysutils.
[2] تدعم Delphi أيضًا فصول الاستثناءات التي لا ترث من الاستثناء ، لكنني لا أعتقد أنه من الحكمة جدًا القيام بذلك.