۱۴۰۴/۰۷/۰۹
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 در try | finally اجرا میشود، سپس متد خروج میکند |
| using | تضمین میکند Dispose فراخوانی شود، جایگزین try/finally برای منابع |
✅ نکته تستی:
- سوالات معمول:
- اجرای finally بعد از return
- ترتیب اجرای try/catch/finally
- تفاوت try/catch با using
Accept Cookies
[your-shortcode]