استثناءهای اداره نشده

استثناءهای اداره نشده، استثناءهایی هستند که به درستی توسط برنامه اداره نشده‌اند و باعث می‌شوند که برنامه به پایان برسد. در اینجا می‌خواهیم به شما نشان دهیم که وقتی یک برنامه در زمان اجرا با یک استثناء مواجه می‌شود و آن را اداره نمی‌کند چه اتفاقی می افتد. در آینده خواهید دید که یک استثناء چگونه به صورت بالقوه باعث نابودی جریان و اجرای برنامه شما می‌شود. از ابتدای آموزش تا کنون برای اجرای برنامه‌ها و نمونه کدها از حالت Non-Debug(بدون خطایابی) استفاده کرده‌ایم. اجرا کردن یک برنامه بدون خطا در حالت Non-Debug یا Debug دارای تفاوتهای جزئی می‌باشد. قصد داریم این تفاوت را برای شما توضیح دهیم. یک برنامه جدید کنسول ایجاد کرده و نام آن را ExceptionTest می‌گذاریم.

   1: using System;
   2: 
   3: namespace ExceptionTest
   4: {
   5:     public class Program
   6:     {
   7:         public static void Main()
   8:         {
   9:             int five = 5;
  10:             int zero = 0;
  11: 
  12:             //Generate an exception by dividing 5 by 0
  13:             int result = five / zero;
  14:         }
  15:     }
  16: }

همانطور که در مثال بالا مشاهده می‌کنید تقسیم یک عدد صحیح بر صفر غیر مجاز است و باعث ایجاد خطای System.DivideByZeroException می‌شود.

حالت بدون اداره کردن استثناء (حالت Non-Debug)

برنامه را در حالت Non-Debug به وسیله کلیدهای ترکیبی Ctrl+F5 اجرا می‌کنیم. برنامه با موفقیت اجرا شده ولی با پیغام خطای زیر مواجه می‌شوید :

Unhandled Exception: System.DivideByZeroException: Attempted to divide by zero.
   at ExceptionTest.Program.Main() in C:UsersTheUserAppDataLocalTemporary Proje
ctsExceptionTestProgram.cs:line 9

و بلافاصله پنجره زیر بعد از بستن برنامه نمایش داده می‌شود :
unhandled-exceptions-01
نمایش پنجره بالا به دلیل وجود یک استثناء اداره نشده است، چون که شما از هیچ کدام از تکنیک‌های اداره استثناء استفاده نکرده‌اید. معمولاً جزییات بالا برای کسی که از برنامه شما استفاده می‌کند لازم نیست.

حالت اداره کردن استثناء (Debug Mode)

یکی از راه‌های بهتر برای دیدن اطلاعاتی در مورد استثناءهای اداره نشده استفاده از حالت Debug است. برای استفاده از این حالت برنامه را از مسیر Debug > Start Debugging اجرا نمایید. همچنین می‌توانید از دکمه F5 و یا فلش سبزرنگ واقع در toolbar استفاده نمایید. به وسیله هر یک از سه حالت بالا برنامه در حالت debug اجرا می‌شود. در طول اجرای برنامه در این حالت اگر برنامه در قسمت‌هایی دارای ایراد باشد متوقف شده و خطاهای آن با رنگ زرد نمایش داده شود و پنجره دستیار استثناء (Exception Assistant) نمایان گردد.
unhandled-exceptions-01
پنجره دستیار استثناء پنجره‌ای مفید است که در مورد استثناء و چگونگی برطرف کردنان اطلاعاتی در اختیار شما می‌گذارد. اگر این پنجره مخفی شد به سادگی و با کلیک بر روی دستوری که دارای خطا است دوباره ظاهر می‌شود.