مدیریت خطا (Exception) ها در سی شارپ (try و catch)

مدیریت خطا (Exception) ها در سی شارپ (try و catch)

زمان مطالعه

4 دقیقه

تعداد بازدید

151

تعداد پرسش ها

0

افزودن به لیست علاقه مندی ها


برچسب ها :


اشتراک گذاری این مطلب

Exception (خطا) ها در سی شارپ

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

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

try و catch در سی شارپ

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

دستور catch به شما امکان می دهد در صورت بروز خطا در بلوک try ، یک بلوک از کد را برای اجرا تعریف کنید.

کلمات کلیدی try وcatch به صورت جفت ارائه می شوند:

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]); // error!

خروجی:System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'

اگر خطایی رخ دهد ، می توانیم از 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، d یک کد را اجرا کنید:

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.

کلمه کلیدی throw 

دستور throw به شما امکان می دهد یک خطای سفارشی ایجاد کنید.

دستور throw همراه با یک کلاس exception استفاده می شود. بسیاری از کلاسهای exception در سی شارپ وجود دارد: 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.'

اگر سن 20 سال بود ، شما یک exceptionپیدا نمی کنید:

checkAge(20);

خروجی:Access granted - You are old enough!



پرسش و پاسخ
0
دوره پیشنهادی
دوره پیشنهادی