সাধারণত হ্যাঁ, শেষ পর্যন্ত চলবে।
নিম্নলিখিত তিনটি পরিস্থিতিতে, শেষ পর্যন্ত হবে সর্বদা চালানো হবে:
- কোনও ব্যতিক্রম ঘটে না
- সিঙ্ক্রোনাস ব্যতিক্রম (সাধারণ প্রোগ্রাম প্রবাহে ব্যতিক্রমগুলি)।
এটিতে সি.এল.এস. কমপ্লায়েন্ট ব্যতিক্রমগুলি অন্তর্ভুক্ত রয়েছে যা System.Exception এবং নন-সিএলএস অনুবর্তী ব্যতিক্রমগুলি থেকে আসে, যা System.Exception থেকে প্রাপ্ত নয়। নন-সিএলএস সম্মতিযুক্ত ব্যতিক্রমগুলি স্বয়ংক্রিয়ভাবে রানটাইম র্যাপড এক্সেক্সেশন দ্বারা আবৃত হয়। সি # নন-সিএলএস অভিযোগের ব্যতিক্রম ছুঁড়ে ফেলতে পারে না, তবে সি ++ এর মতো ভাষা পারে। সি # এমন একটি ভাষায় লিখিত কোডে কল করতে পারে যা নন-সিএলএস অনুবর্তী ব্যতিক্রম ছুঁড়ে ফেলতে পারে।
- অ্যাসিঙ্ক্রোনাস থ্রেডঅবর্টেক্সেপশন
.NET 2.0 হিসাবে , একটি থ্রেডঅবর্ট এক্সেকশন শেষ পর্যন্ত চলমান থেকে আটকাবে না। থ্রেডআবার্ট এক্সেপশন এখন শেষ অবধি বা তার পরে উত্তোলন করা হয়। শেষ পর্যন্ত সর্বদা চলতে থাকবে এবং থ্রেড অ্যাওর্ট দ্বারা বাধা দেওয়া হবে না, যতক্ষণ না থ্রেড অ্যাওর্ট হওয়ার আগে প্রকৃতপক্ষে চেষ্টাটি প্রবেশ করা হয়েছিল।
নিম্নলিখিত পরিস্থিতিতে, শেষ পর্যন্ত চলবে না:
অ্যাসিঙ্ক্রোনাস স্ট্যাকওভারফ্লোএক্সেপশন।
.NET 2.0 হিসাবে একটি স্ট্যাক ওভারফ্লো প্রক্রিয়াটি শেষ করে দেবে। শেষ অবধি চালানো হবে না, যদি না শেষ অবধি একটি সিইআর (সীমাবদ্ধ নির্বাহ অঞ্চল) করার জন্য আরও বাধা প্রয়োগ করা হয়। সাধারণ ব্যবহারকারী কোডে সিইআর ব্যবহার করা উচিত নয়। এগুলি কেবল সেখানেই ব্যবহার করা উচিত যেখানে ক্লিন-আপ কোডটি সর্বদা চলমান - সমস্ত প্রক্রিয়া যে কোনও উপায়ে স্ট্যাক ওভারফ্লোতে বন্ধ হয়ে যাওয়ার পরে এবং সমস্ত পরিচালিত অবজেক্টগুলি ডিফল্টরূপে পরিষ্কার-আপ করা হবে। সুতরাং, কেবলমাত্র সিইআর প্রাসঙ্গিক হওয়া উচিত সেই প্রক্রিয়াটির বাইরে বরাদ্দকৃত সম্পদগুলির জন্য, যেমন, নিয়ন্ত্রণহীন হ্যান্ডলগুলি।
সাধারণত, পরিচালনা কোডটি ব্যবহারকারীর কোড দ্বারা গ্রাস করার আগে কিছু পরিচালিত শ্রেণীর দ্বারা মোড়ানো হয়। পরিচালিত মোড়কের ক্লাসটি নিয়ন্ত্রিত হ্যান্ডেলটি মোড়ানোর জন্য সাধারণত একটি SafeHandle ব্যবহার করবে। সাফহ্যান্ডল একটি সমালোচনামূলক চূড়ান্তকরণকারী, এবং একটি রিলিজ পদ্ধতি কার্যকর করে যা একটি সিইআর-এ চালিত হয় ক্লিন-আপ কোডটি কার্যকর করার গ্যারান্টি হিসাবে। এই কারণে, আপনার মাধ্যমে সিআরগুলি লিখিতভাবে লিখিত লিখিত কোডগুলি দেখতে পাওয়া উচিত নয়।
সুতরাং শেষ পর্যন্ত স্ট্যাকওভারফ্লোএক্সসেপশনটিতে চালিত হয় না তা ব্যবহারকারীর কোডে কোনও প্রভাব ফেলতে হবে না, যেহেতু প্রক্রিয়াটি যেভাবেই শেষ হবে। আপনার যদি কোনও প্রান্তের কেস থাকে যেখানে আপনার কোনও সেফহ্যান্ডল বা ক্রিটিকাল ফিনালাইজার অবজেক্টের বাইরে কিছু ব্যবস্থাপনিত রিসোর্স পরিষ্কার করতে হবে তবে নীচে সিআরই ব্যবহার করুন; তবে দয়া করে মনে রাখবেন, এটি একটি খারাপ অভ্যাস - পরিচালনা না করা ধারণাটি কোনও পরিচালিত শ্রেণীর (এস) এবং নকশার দ্বারা উপযুক্ত সেফহ্যান্ডল (গুলি) এ বিমূর্ত করা উচিত।
যেমন,
// No code can appear after this line, before the try
RuntimeHelpers.PrepareConstrainedRegions();
try
{
// This is *NOT* a CER
}
finally
{
// This is a CER; guaranteed to run, if the try was entered,
// even if a StackOverflowException occurs.
}