C# – استثناها (Exceptions)

C# Exceptions (استثناهای C#)

هنگام اجرای کدهای C#، ممکن است خطاهای مختلفی اتفاق بیفتد: خطاهای برنامه‌نویسی که توسط برنامه‌نویس انجام شده‌اند، خطاهایی به دلیل ورودی نادرست، یا مسائل غیرقابل پیش‌بینی دیگر.

وقتی یک خطا اتفاق می‌افتد، C# معمولاً متوقف شده و پیغام خطا را تولید می‌کند. اصطلاح فنی برای این عمل: C# یک استثنا (Exception) پرتاب می‌کند.

C# try and catch (Try و Catch در C#)

بیان try (تلاش) به شما این امکان را می‌دهد که یک بلوک کد را برای تست خطاها هنگام اجرا تعریف کنید.

بیان catch (گرفتن) به شما این امکان را می‌دهد که یک بلوک کد را تعریف کنید که در صورت وقوع خطا در بلوک try، اجرا شود.

بیان‌های try و catch (تلاش و گرفتن) به صورت جفت استفاده می‌شوند:

Syntax (سینتکس):

try 
{
  //  Block of code to try (بلوک کدی که باید تست شود)
}
catch (Exception e)
{
  //  Block of code to handle errors (بلوک کدی برای مدیریت خطاها)
}

مثال:

در مثال زیر، ما یک آرایه از سه عدد صحیح ایجاد می‌کنیم:

این باعث ایجاد خطا خواهد شد، زیرا myNumbers[10] وجود ندارد.

int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]); // خطا!

پیغام خطا به صورت زیر خواهد بود:

System.IndexOutOfRangeException: 'Index was outside the bounds of the array.' (System.IndexOutOfRangeException: 'شاخص خارج از حدود آرایه بود.')

اگر خطا رخ دهد، می‌توانیم از try...catch (تلاش…گرفتن) برای گرفتن خطا و اجرای کدی برای مدیریت آن استفاده کنیم.

در مثال زیر، ما از متغیر داخل بلوک catch (گرفتن) با نام e به همراه ویژگی Message (پیغام) استفاده می‌کنیم که پیغام توصیفی از استثنا را خروجی می‌دهد:

مثال:

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine(e.Message); // خروجی پیغام استثنا
}

خروجی:

Index was outside the bounds of the array. (شاخص خارج از حدود آرایه بود.)

شما می‌توانید پیغام خطای خود را نیز خروجی دهید:

مثال:

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine("Something went wrong."); // پیغام خطای سفارشی
}

خروجی:

Something went wrong. (مشکلی پیش آمده است.)

Finally (در نهایت)

بیان finally (در نهایت) به شما این امکان را می‌دهد که کدی را بعد از try...catch (تلاش…گرفتن) اجرا کنید، صرف نظر از نتیجه:

مثال:

try
{
  int[] myNumbers = {1, 2, 3};
  Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{
  Console.WriteLine("Something went wrong.");
}
finally
{
  Console.WriteLine("The 'try catch' is finished."); // پیغام نهایی
}

خروجی:

Something went wrong. (مشکلی پیش آمده است.)

The 'try catch' is finished. (بلاک 'تلاش گرفتن' تمام شده است.)

The throw keyword (کلمه کلیدی throw)

بیان throw (پرتاب) به شما این امکان را می‌دهد که یک خطای سفارشی ایجاد کنید.

بیان throw با یک کلاس استثنا استفاده می‌شود. کلاس‌های استثنای مختلفی در C# وجود دارند: ArithmeticException (استثنای ریاضی)، FileNotFoundException (استثنای عدم یافتن فایل)، IndexOutOfRangeException (استثنای خارج از محدوده شاخص)، TimeOutException (استثنای زمان‌بندی)، و غیره:

مثال:

static void checkAge(int age)
{
  if (age < 18)
  {
    throw new ArithmeticException("Access denied - You must be at least 18 years old."); // پرتاب استثنای سفارشی
  }
  else
  {
    Console.WriteLine("Access granted - You are old enough!");
  }
}

static void Main(string[] args)
{
  checkAge(15); // بررسی سن
}

پیغام خطای نمایش داده شده در برنامه به صورت زیر خواهد بود:

System.ArithmeticException: 'Access denied - You must be at least 18 years old.' (System.ArithmeticException: 'دسترسی رد شد - شما باید حداقل 18 سال سن داشته باشید.')

اگر سن 20 باشد، استثنایی دریافت نخواهید کرد:

مثال:

checkAge(20); // بررسی سن

خروجی:

Access granted - You are old enough! (دسترسی اعطا شد - شما به اندازه کافی بزرگ هستید!)

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - تاریخ‌ها (Dates)

JavaScript – تاریخ‌ها (Dates)

آبجکت‌های تاریخ (Date) در جاوااسکریپت آبجکت‌های تاریخ در جاوااسکریپت به ما امکان کار با تاریخ و زمان را می‌دهند....

بیشتر بخوانید
JavaScript - آرایه‌های ثابت (Array Const)

JavaScript – آرایه‌های ثابت (Array Const)

جاوااسکریپت: تعریف آرایه با const در سال 2015، جاوااسکریپت کلمه کلیدی مهمی به نام const را معرفی کرد. این...

بیشتر بخوانید
JavaScript - تکرار آرایه‌ها (Array Iteration)

JavaScript – تکرار آرایه‌ها (Array Iteration)

جاوا اسکریپت: تکرار بر روی آرایه‌ها جاوا اسکریپت روش‌های مختلفی برای تکرار (Iteration) بر روی آرایه‌ها ارائه می‌دهد که...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.