تنوع وظایفی که امروزه با کمک رایانه های شخصی حل شده است ، با وجود مجموعه ای عظیم از برنامه های کاربردی فراهم شده است. راحتی کار با نرم افزار تا حد زیادی به قابلیت اطمینان آن بستگی دارد ، که در صورت عدم وجود شرایط اضطراری بیان می شود. با این حال ، بسیاری از برنامه ها در نامناسب ترین لحظه خراب می شوند. چرا؟
مکانیسم استثنا برای ردیابی و مدیریت موقعیت های خاص ، غیر عادی یا اشتباه است که در طی کار برنامه های رایانه ای تحت کنترل سیستم عامل های مدرن بوجود می آیند. موارد استثنا می تواند سخت افزار (پرتاب شده توسط پردازنده) و نرم افزار (پرتاب شده توسط خود برنامه یا برخی از م componentلفه های پلاگین داخلی) باشد.
صرف نظر از نوع ، می توان این استثنا را به درستی گرفت و اداره کرد. موارد استثنایی غیرمستقیم به کنترل کننده زمان اجرا ریشه کتابخانه یا یک کنترل کننده نصب شده روی سیستم عامل می رود. اگر این اتفاق بیفتد ، برنامه با یک پیام یا یک پنجره خاتمه غیر عادی خراب می شود (در ویندوز). اگر کنترل کننده سیستم عامل کار نکند (مثلاً عمداً برداشته شد) ، برنامه "بی صدا خراب می شود". بنابراین ، برنامه ها به دلیل استثناهایی خراب می شوند که نمی توان آنها را کنترل کرد. دلایل وقوع استثنائات متفاوت است.
در اکثریت قریب به اتفاق موارد ، برنامه ها به دلیل اجرای کد خود حاوی خطاهای صریح یا ضمنی در اجرای ، خراب می شوند. لیست علل احتمالی شرایط اضطراری بسیار طولانی است. اینها هم خطاهای کلاسیک عملیاتی روی اعداد شناور (به عنوان مثال تقسیم بر 0) و هم خطاهای کار با حافظه (خواندن یا نوشتن خارج از فضای آدرس فرایند ، دسترسی به صفحات محافظت شده ، نوشتن در یک قسمت حافظه فقط خواندنی) ، پشته سرریز به دلیل بازگشت نامحدود و غیره در این موارد ، استثناهای سخت افزاری یا استثناهای سیستم عامل پرتاب می شوند.
خطاهای ضمنی شامل موارد مختلف فیلتر ناکافی داده های ورودی ، عدم اعتبارسنجی مقادیر اشاره گر و موارد دیگر است. چنین کاستی هایی تنها در موارد خاص منجر به ایجاد شرایط استثنایی می شود.
خطاهای پیاده سازی را می توان در اجزای خارجی مورد استفاده برنامه نیز مشاهده کرد. به عنوان مثال ، در کتابخانه های پویا که قابلیت های لازم یا ماژول های الحاقی را فراهم می کنند. کد برنامه ای که به طور ضمنی در فضای آدرس یک فرآیند بارگذاری می شود (به عنوان مثال ، برای رهگیری برخی از توابع API) نیز می تواند باعث خراب شدن برنامه شود.
بسیاری از م componentsلفه ها و کتابخانه ها (به عنوان مثال ، ADO در ویندوز) از مکانیزم استثنای برنامه ای به عنوان اولویت گزارش خطاها استفاده می کنند. عدم وجود یا رسیدگی ناقص استثناها توسط این نوع برنامه ها حتی در شرایط کاملاً بی خطر (مانند قطع اتصال به پایگاه داده) می تواند منجر به خرابی آن شود.