فهرست سرفصل‌های #C
خانه (HOME) مقدمه (Intro) شروع کار (Get Started) سینتکس (Syntax) خروجی (Output) کامنت ها (Comments) متغیرها (Variables) ثابت ها (Constants) نمایش متغیرها (Display Variables) متغیرهای متعدد (Multiple Variables) شناسه ها (Identifiers) انواع داده (Data Types) تبدیل نوع (Type Casting) ورودی کاربر (User Input) عملگرها (Operators) انتساب (Assignment) مقایسه (Comparison) منطقی (Logical) ریاضی (Math) رشته ها (Strings) اتصال رشته ها (Concatenation) درون گذاری رشته (Interpolation) دسترسی به رشته ها (Access Strings) کاراکترهای ویژه (Special Characters) بولی ها (Booleans) if (If...Else) else (If...Else) else if (If...Else) شکل کوتاه if..else (Short hand if..else) سوئیچ (Switch) حلقه while (While Loop) حلقه for (For Loop) حلقه foreach (Foreach loop) شکستن/ادامه (Break/Continue) آرایه ها (Arrays) حلقه روی آرایه (Loop through an array) مرتب سازی آرایه ها (Sort arrays) آرایه های چندبعدی (Multidimensional arrays) متدها (Methods) پارامترها (Parameters) پارامتر پیش فرض (Default Parameter) مقادیر بازگشتی (Return Values) آرگومان های نام دار (Named Arguments) بارگذاری متد (Method Overloading) شیء گرایی (OOP) کلاس ها/اشیا (Classes/Objects) چند شیء (Multiple Objects) اعضای کلاس (Class Members) سازنده ها (Constructors) قیدهای دسترسی (Access Modifiers) ویژگی ها (Properties) وراثت (Inheritance) چندریختی (Polymorphism) انتزاع (Abstraction) اینترفیس (Interface) چند اینترفیس (Multiple Interfaces) شمارش ها (Enums) فایل ها (Files) استثناها (Exceptions) افزودن دو عدد (Add Two Numbers) نمونه ها (Examples)
#C

#C — استثناها (Exceptions)

آخرین بروزرسانی: 1404/08/05

استثناها (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# برو تا تمرین ساده ای انجام دهی.