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! (دسترسی اعطا شد - شما به اندازه کافی بزرگ هستید!)
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام