يتم توفير مجموعة متنوعة من المهام التي يتم حلها اليوم بمساعدة أجهزة الكمبيوتر الشخصية من خلال وجود مجموعة ضخمة من برامج التطبيقات. تعتمد راحة العمل مع البرنامج إلى حد كبير على موثوقيته ، والتي يتم التعبير عنها في غياب حالات الطوارئ. ومع ذلك ، فإن العديد من البرامج تتعطل في أكثر اللحظات غير المناسبة. لماذا ا؟
يتم استخدام آلية الاستثناء لتتبع ومعالجة المواقف الخاصة أو غير الطبيعية أو الخاطئة التي تنشأ أثناء تشغيل برامج الكمبيوتر تحت سيطرة أنظمة التشغيل الحديثة. يمكن أن تكون الاستثناءات هي الأجهزة (التي يتم طرحها بواسطة المعالج) والبرامج (التي يتم طرحها بواسطة التطبيق نفسه أو بعض المكونات الخارجية للمكونات الإضافية).
بغض النظر عن النوع ، يمكن اكتشاف الاستثناء والتعامل معه بشكل صحيح. تنتقل الاستثناءات غير المعلنة إلى معالج مكتبة وقت تشغيل الجذر أو معالج مثبت على نظام التشغيل. في حالة حدوث ذلك ، يتعطل البرنامج مع ظهور رسالة أو نافذة إنهاء غير طبيعية (في نظام التشغيل Windows). إذا لم يعمل معالج نظام التشغيل (على سبيل المثال ، تمت إزالته عن عمد) ، فإن البرنامج "يتعطل بصمت". وبالتالي ، تتعطل البرامج بسبب الاستثناءات التي لا يمكن معالجتها. تختلف أسباب حدوث الاستثناءات.
في الغالبية العظمى من الحالات ، تتعطل البرامج بسبب تنفيذ التعليمات البرمجية الخاصة بها التي تحتوي على أخطاء تنفيذ صريحة أو ضمنية. قائمة الأسباب المحتملة لحالات الطوارئ طويلة جدًا. كلاهما أخطاء كلاسيكية في العمليات على أرقام الفاصلة العائمة (على سبيل المثال ، القسمة على 0) ، وأخطاء العمل بالذاكرة (القراءة أو الكتابة خارج مساحة عنوان العملية ، والوصول إلى الصفحات المحمية ، والكتابة في منطقة ذاكرة للقراءة فقط) ، مكدس الفائض بسبب العودية اللانهائية ، إلخ. في هذه الحالات ، يتم طرح استثناءات الأجهزة أو استثناءات نظام التشغيل.
تشمل الأخطاء الضمنية حالات مختلفة من التصفية غير الكافية لبيانات الإدخال ، ونقص التحقق من صحة قيم المؤشر ، وأكثر من ذلك بكثير. مثل هذه النواقص تؤدي إلى حالات استثنائية فقط في حالات معينة.
يمكن أيضًا العثور على أخطاء التنفيذ في المكونات الخارجية التي يستخدمها التطبيق. على سبيل المثال ، في المكتبات الديناميكية التي توفر الوظائف الضرورية أو الوحدات النمطية الإضافية. يمكن أن يتسبب رمز البرنامج الذي تم تحميله ضمنيًا في مساحة عنوان العملية (على سبيل المثال ، من أجل اعتراض وظائف معينة لواجهة برمجة التطبيقات) في تعطل البرنامج.
تستخدم العديد من المكونات والمكتبات (على سبيل المثال ، ADO على Windows) آلية استثناء برمجي كأولوية للإبلاغ عن الأخطاء. يمكن أن يؤدي غياب الاستثناءات أو المعالجة غير المكتملة لهذا النوع من التطبيقات إلى تعطله حتى في المواقف غير الضارة تمامًا (مثل فقد الاتصال بقاعدة البيانات).