অন্যরা যেমন বলেছে, তবে ব্যাতিক্রমগুলিতে ফোকাস করেছে, এটি সত্যই নিয়ন্ত্রণের স্থানান্তরকে অস্পষ্ট পরিচালনা করার বিষয়ে।
আপনার মনে মনে আপনি সম্ভবত এই জাতীয় দৃশ্যের কথা ভাবছেন:
public static object SafeMethod()
{
foreach(var item in list)
{
try
{
try
{
//do something that won't transfer control outside
}
catch
{
//catch everything to not throw exceptions
}
}
finally
{
if (someCondition)
//no exception will be thrown,
//so theoretically this could work
continue;
}
}
return someValue;
}
তাত্ত্বিকভাবে, আপনি নিয়ন্ত্রণ প্রবাহটি ট্র্যাক করে বলতে পারেন, হ্যাঁ, এটি "ঠিক আছে"। কোনও ব্যতিক্রম নিক্ষেপ করা হয় না, কোনও নিয়ন্ত্রণ স্থানান্তরিত হয় না। তবে সি # ভাষা ডিজাইনারদের মনে অন্যান্য বিষয় ছিল।
থ্রাউন ব্যতিক্রম
public static void Exception()
{
try
{
foreach(var item in list)
{
try
{
throw new Exception("What now?");
}
finally
{
continue;
}
}
}
catch
{
//do I get hit?
}
}
আতঙ্কিত গোটো
public static void Goto()
{
foreach(var item in list)
{
try
{
goto pigsfly;
}
finally
{
continue;
}
}
pigsfly:
}
ফেরত
public static object ReturnSomething()
{
foreach(var item in list)
{
try
{
return item;
}
finally
{
continue;
}
}
}
বিচ্ছেদ
public static void Break()
{
foreach(var item in list)
{
try
{
break;
}
finally
{
continue;
}
}
}
তাই উপসংহারে, হ্যাঁ, যখন হয় একটি সামান্য একটি ব্যবহারের সম্ভাবনা continueপরিস্থিতিতে যেখানে নিয়ন্ত্রণ স্থানান্তরিত হচ্ছে না, কিন্তু একটি ভাল চুক্তি মামলার (সংখ্যাগরিষ্ঠ?) ব্যতিক্রম বা জড়িত returnব্লক। ভাষা ডিজাইনার অনুভূত খুব দ্ব্যর্থক এবং (সম্ভবত) অসম্ভব কম্পাইল সময় আপনার এ নিশ্চিত করতে হবে continueব্যবহার করা হয় শুধুমাত্র ক্ষেত্রে যেখানে নিয়ন্ত্রণ প্রবাহ স্থানান্তরিত হচ্ছে না হবে।