آموزش سی شارپ

مباحث پایه سی شارپ

مباحث پیشرفه سی شارپ

دستورات سی شارپ

مدیریت خطا (Exception Handling) در زبان سی شارپ – آموزش زبان سی شارپ

  • چهارشنبه ۸ خرداد ۱۳۹۸
  • بازدید ۵,۵۶۸ نفر

تصویر csharp-exception-handling_4557 مدیریت خطا (Exception Handling) در زبان سی شارپ – آموزش زبان سی شارپ

مدیریت خطا (Exception Handling) در زبان سی شارپ

استثنا (Exception) مشکلی است که در طول اجرای یک برنامه رخ می دهد. در زبان برنامه نویسی C#، استثنا یک پاسخ به شرایط غیر منتظره ای است که در هنگام اجرای یک برنامه ممکن است رخ دهد. مانند تلاش برای تقسیم یک عدد بر صفر.

استثنا امکان انتقال کنترل اجرای برنامه از محلی به محل دیگر را فراهم می کند. در زبان سی شارپ برای مدیریت استثناها از کلمات کلیدی زیر استفاده می شود:

  • try : بلوک کدی را مشخص می کند که ممکن است در هنگام اجرا شدن، باعث بوجود آمدن استثنا شود.
  • catch : استثناهایی که ممکن است در بلوک try رخ دهند توسط این بخش مدیریت می شوند (به اصطلاح گرفته می شوند).
  • finally : کدهای قرار گرفته در این بلوک در هر شرایطی اجرا می شوند.
  • throw : هنگامی که در اجرای برنامه خطای رخ می دهد، با استفاده از کلمه کلیدی throw می توان استثنای مرتبط با خطا را تولید می کند.

سینتکس

اگر فرض کنیم که یک متد قرار است یک استثنا ایجاد کند، با استفاده از بلوک try/catch می توانیم این استثنا را مدیریت کنیم. در زیر سینتکس کلی یک بلوک try/catch را مشاهده می کنید:

همان طور که در سینتکس فوق مشاهده می کنید، به منظور مدیریت استثناهای مختلف می توان چندین بخش catch برای بلوک try/catch تعریف کرد.

کلاس های استثنا در زبان سی شارپ

در زبان برنامه نویسی C# استثناها توسط کلاس ها نمایش داده می شوند. هر کلاسی که مربوط به یک استثنا است، به طور مستقیم یا غیر مستقیم از کلاس System.Exception مشتق شده است. برای مثال کلاس های استثنای System.ApplicationException و System.SystemException از کلاس System.Exception مشتق شده اند.

کلاس System.ApplicationException برای استثناهایی است که توسط برنامه کاربردی تولید می شوند. بنابراین استثناهایی که توسط برنامه نویس ایجاد می شوند، باید از این کلاس مشتق شوند. کلاس System.SystemException کلاس پایه برای تمام استثناهای پیشفرض سیستم می باشد.

در جدول زیر برخی از استثناهای از پیش تعریف شده که از کلاس System.Exception مشتق شده اند را مشاهده می کنید:

ردیفتوضیحات
1System.IO.IOException

مدیریت خطاهای مربوط به I/O

2System.IndexOutOfRangeException

مدیریت خطاهایی که هنگام تلاش برای دسترسی به عنصری که در رنج یک آرایه نیست رخ می دهند.

3System.ArrayTypeMismatchException

مدیریت خطاهایی که در زمان مشابه نبودن نوع آرایه با نوع داده رخ می دهند.

4System.NullReferenceException

مدیریت خطاهایی که از هنگام اشاره به یک شیء null رخ می دهند.

5System.DivideByZeroException

مدیریت خطاهایی که از هنگام تقسیم یک عدد بر صفر رخ می دهند.

6System.InvalidCastException

مدیریت خطاهایی که از هنگام تبدیل نوع رخ می دهند.

7System.OutOfMemoryException

مدیریت خطاهایی که از هنگام کمبود حافظه رخ می دهند.

8System.StackOverflowException

مدیریت خطاهایی که از هنگام سرریز شدن پشته رخ می دهند.

مدیریت استثناها

زبان برنامه نویسی سی شارپ در قالب بلوک try/catch یک راه حل ساخت یافته برای پردازش استثناها فراهم می کند. با استفاده از این بلوک ها دستورات اصلی از دستورات مربوط به پردازش خطاها جدا می شوند.

این بلوک مدیریت خطا با استفاده از کلمات کلیدی try، catch و finally پیاده سازی می شوند. در مثال زیر چون تلاش می شود تا یک عدد را بر صفر تقسیم کنیم، استثنای DivideByZeroException رخ می دهد:

امتحان کنید

زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:

تعریف استثنا توسط کاربر

شما می توانید در صورت نیاز استثناهای خود را ایجاد کنید. استثناهای ایجاد شده توسط کاربر باید از کلاس Exception مشتق شوند. مثال زیر نحوه ساخت یک استثنا را نشان می دهد:

زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:

تولید استثنا

اگر یک شیء به طور مستقیم یا غیر مستقیم از کلاس System.Exception مشتق شده باشد، می توانید آن را با استفاده از کلمه کلیدی throw و به عنوان یک استثنا پرتاب کنید. مانند مثال زیر:

ثبت نظر
ریفریش کنید!
نظرات کاربران (۲ مورد)
  1. تصویر آواتار کاربر 0
    ناصر شنبه , 13 مهر

    سلام، بخش پیشرفته این اموزش رو کی قرار میدین؟

    • تصویر آواتار کاربر 124
      AmRoشنبه , 13 مهر

      در حال حاضر داریم سایر آموزش ها که ناقص موندن رو تکمیل میکنیم....بعد از اتمام اونها...این بخش ها رو هم ادامه میدیم.