۱۴۰۴/۰۷/۰۹ Nebular

Exception Handling در سی شارپ

۱. بلوک‌های try, catch, finally

۱.۱ try

  • بلوکی که کد پرخطر یا مستعد خطا داخل آن قرار می‌گیرد.
  • اگر خطایی رخ دهد، به catch منتقل می‌شود.

۱.۲ catch

  • مدیریت خطا: می‌توانیم نوع exception مشخص کنیم یا همه خطاها را بگیریم.
  • مثال:
try
{
    int x = 10;
    int y = 0;
    int z = x / y; // خطا: DivideByZeroException
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("Cannot divide by zero!");
}

۱.۳ finally

  • همیشه اجرا می‌شود، حتی اگر در try یک return باشد یا exception رخ دهد.
  • معمولاً برای پاکسازی منابع استفاده می‌شود (مثل بستن فایل یا اتصال به دیتابیس).

مثال:

try
{
    Console.WriteLine("Try block");
    return; // حتی بعد از return هم finally اجرا می‌شود
}
catch (Exception ex)
{
    Console.WriteLine("Catch block");
}
finally
{
    Console.WriteLine("Finally block");
}

خروجی:

Try block
Finally block

نکته: finally اجرا می‌شود حتی اگر برنامه exit شود یا exception پرتاب شود، مگر اینکه process فوراً terminate شود.


۲. using statement

  • کاربرد: تضمین فراخوانی Dispose برای اشیاءی که منابع غیرمدیریت‌شده دارند (مثل فایل، database connection).
  • معادل try/finally کوتاه شده است.

مثال:

using (var file = new System.IO.StreamWriter("test.txt"))
{
    file.WriteLine("Hello World");
} // در اینجا file.Dispose() به طور خودکار فراخوانی می‌شود حتی اگر exception رخ دهد

نکته: using فقط برای اشیاءی که IDisposable پیاده‌سازی کرده‌اند قابل استفاده است.


۳. جمع‌بندی نکات مهم آزمونی

نکتهتوضیح
tryکد مستعد خطا داخل آن قرار می‌گیرد
catchمدیریت exception‌ها، می‌توان نوع مشخص یا همه را بگیرد
finallyهمیشه اجرا می‌شود حتی بعد از return یا exception
return در tryfinally اجرا می‌شود، سپس متد خروج می‌کند
usingتضمین می‌کند Dispose فراخوانی شود، جایگزین try/finally برای منابع

✅ نکته تستی:

  • سوالات معمول:
    1. اجرای finally بعد از return
    2. ترتیب اجرای try/catch/finally
    3. تفاوت try/catch با using
Accept Cookies
Accept Cookies
[your-shortcode]