کلاس IndexOutOfRangeException
نام دوره: زبان سی شارپ مقدماتی
نویسنده: علی مقدم جاه (مدرس دوره)
کلاس IndexOutOfRangeException چیست؟
در پست آموزش کلاس Exception، با توضیحات اولیه در رابطه با تفاوت میان ارور و استثنا آشنا شدهاید.
فرض کنید یک آرایه از سن دانش آموزان یک کلاس را به شکل زیر در برنامه خود تعریف کردهاید:
int[] age = { 19, 18, 20, 21, 17,16};
حال فرض کنید که معلم این کلاس میخواهد بداند که سن دانشآموز شماره ۶ چقدر است، اما در زمان ورود مقدار ۶، اشتباه مقدار ۹ را وارد میکند:
int[] age = { 19, 18, 20, 21, 17,16};
Console.WriteLine(age[9]);
در این حالت چون خانهای با شماره اَندیس ۹ وجود ندارد، درنتیجه قطعا سیستم ارور خواهد داد.
برای جلوگیری از بروز این خطا، باید از دستور try catch استفاده نمایید:
try
{
int[] age = { 19, 18, 20, 21, 17, 16 };
Console.WriteLine(age[9]);
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
همانطور که در قطعه کد بالا مشاهده میکنید، ما قسمتی از کدهای خود را که احتمال بروز خطا یا استثنا داشتند، درون محدوده بلاک try قرار دادهایم، اینکار یعنی داریم به سیستم میفهمانیم که تلاش کن این کدها را اجرا کنی، اگر توانستی کدها را اجرا کنی که چه خوب و بیخیال کدهای داخل بلاک Catch بشو، اما اگه کدهای داخل بلاک try به مشکلی برخوردند، حالا کدهای داخل بلاک catch را اجرا کن.
همچنین در محدوده بلاک catch، به عنوان ورودی متد WriteLine، پراپرتی Message را توسط شئ ex فراخوانی کردیم.
این پراپرتی، توانایی چاپ علت ارور بوجود آمده را به شکل مناسب و بدون نمایش (لو رفتن) کدهای برنامهنویسی به کاربران را دارد.
شئ ex از کلاس پشت سر خود یعنی Exception تعریف شده است که میبایست حتما در پرانتز Catch نوشته شود.
نکته: اگر نمیدانستید که ممکن است این چند خط کد چه خطایی را بوجود آورند، میتوانید مثل مثال بالا از کلاس Exception تنها استفاده کنید.
اما اگر مثل الان میدانستید که خطای مربوط به ارجاع مقدار null ممکن است بهوجود بیاید، پس بهتر است به جای استفاده از کلاس والد (Exception)، از کلاس فرزند مختص به این استثنا استفاده کنیم:
try
{
int[] age = { 19, 18, 20, 21, 17, 16 };
Console.WriteLine(age[9]);
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
جهت شرکت در دورههای زبان برنامه نویسی سیشارپ، از کد تخفیف heplc30 استفاده کنید.