Exception (خطا) ها در سی شارپ
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!