استثناها (Exceptions)
گاهی برنامه هنگام اجرا خطا می دهد، مثلاً وقتی عددی را تقسیم بر صفر کنی یا سعی کنی به آیتمی در آرایه دسترسی پیدا کنی که وجود ندارد. در C# به این خطاها استثنا (Exception) می گویند.
ساختار try و catch
با try می توانیم بخشی از کد را امتحان کنیم و اگر خطا رخ داد، با catch آن را مدیریت کنیم تا برنامه متوقف نشود.
try {
// کدی که ممکن است خطا دهد
}
catch (Exception e) {
// کدی برای مدیریت خطا
}
نمونه خطا در آرایه
در مثال زیر، چون عضو شماره 10 در آرایه وجود ندارد، برنامه خطا می دهد.
int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]); // خطا!
خروجی خطا: System.IndexOutOfRangeException: Index was outside the bounds of the array.
مدیریت خطا با try...catch
حالا با try...catch خطا را می گیریم و پیام خطا را چاپ می کنیم:
try {
int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]);
}
catch (Exception e) {
Console.WriteLine(e.Message);
}
پیام خطای دلخواه
می توانی پیام دلخواه خودت را هنگام خطا نمایش دهی:
try {
int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]);
}
catch (Exception e) {
Console.WriteLine("مشکلی پیش آمده است.");
}
بخش finally
عبارت finally برای اجرا شدن کدی است که در هر صورت باید اجرا شود، چه خطا رخ دهد چه نه:
try {
int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]);
}
catch (Exception e) {
Console.WriteLine("خطایی رخ داده است.");
}
finally {
Console.WriteLine("کد try-catch تمام شد.");
}
استفاده از throw برای ساخت خطای دلخواه
با throw می توانی خودت خطا ایجاد کنی. مثلاً اگر سن کمتر از 18 باشد، خطا بده:
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("دسترسی ممنوع - باید حداقل 18 ساله باشی.");
}
else {
Console.WriteLine("دسترسی مجاز است.");
}
}
static void Main(string[] args) {
checkAge(15);
}
جمع بندی سریع
tryبخشی از کد را آزمایش می کند.catchخطا را می گیرد و کنترل می کند.finallyهمیشه در انتها اجرا می شود.throwبرای ساخت خطای سفارشی است.- مدیریت درست خطا از توقف برنامه جلوگیری می کند.
نکته: قبل از کار با استثناها، حتماً بخش فایل ها (Files) را ببین تا خطاهای ورودی و خروجی را بهتر درک کنی. بعد از آن به سراغ بخش جمع دو عدد در C# برو تا تمرین ساده ای انجام دهی.