PDA

View Full Version : استفاده نکردن از Exception برای بالا رفتن پرفرمنس ؟



RoostaYeBekr
سه شنبه 29 بهمن 1387, 18:25 عصر
با سلام
یک بار یک نفر تو همین سایت برای بالا رفتن performance گفته بود که از Exception ها استفاده نکنیم. یعنی مثلا استفاده از مورد 2 به جای 1 ارجحیت دارد:


1 -

try
{
result = 100 / num;
}

catch (Exception e)
{
result = 0;
}

2 -

if (num != 0)
result = 100 / num;
else
result = 0;

کسی علت این مسئله را می داند؟

vcldeveloper
سه شنبه 29 بهمن 1387, 19:45 عصر
علتش اینه که تولید Exception سربار زیادی ایجاد میکنه. از Exception باید فقط برای کنترل خطا استفاده کرد. در کد بالا (کد 1)، شما دارید از چک کردن مقادیر ورودی صرف نظر می کنید، با این پیش فرض که اگر موارد ورودی اشتباه بودند، کد بخش catch اجرا خواهد شد. یعنی دارید از try catch به عنوان یک ساختار کنترلی در برنامه استفاده می کنید (بجای if). این نوع استفاده از Exception Handling اشتباه هست. Exception از اسمش هم پیدا ست که برای کنترل چه چیزی باید استفاده بشه؛ برای استثناء. یعنی شما باید شرط های مورد نیاز را خودتون چک کنید، و تا حد امکان خودتان کنترل همه چیز را در دست داشته باشید، و از Exception برای مدیریت حالات پیش بینی نشده استفاده کنید. البته یک استفاده دیگه هم Exception داره، اون هم به این صورت هست که برنامه نویسی برخی از استثناء ها را هم در نظر میگیره، و از Exception به این دلیل استفاده میکنه که میتونه یک ساختار سلسله مراتبی ایجاد کنه؛ یعنی مثلا شما ممکن هست بخواید با هندل کردن یک Exception، تغییراتی در آن بوجود بیارید، و آن را به متد فراخوان کد خودتان ارجاع بدید.

بطور خلاصه، از Exception بجای ساختارهای کنترلی مثل if استفاده نکنید. از آن فقط برای کنترل خطا، نمایش خطا، و یا انجام پردازش در هنگام بروز خطا استفاده کنید.