আরআইআই আংশিকভাবে সিদ্ধান্ত নেওয়ার বিষয়ে যখন কোনও বস্তু তার নিজের ক্লিনআপের জন্য দায়বদ্ধ হয়ে যায় - নিয়ম হ'ল বস্তু দায়বদ্ধ হয়ে যায় যদি এবং কখন তার নির্মাণকারীর সূচনা সম্পন্ন হয়। ইনিশিয়ালাইজেশন এবং ক্লিনআপ, কনস্ট্রাক্টর এবং ডেস্ট্রাক্টরের প্রতিসাম্য অর্থ, দুজনের একে অপরের সাথে ঘনিষ্ঠ সম্পর্ক রয়েছে।
RAII এর একটি পয়েন্ট ব্যতিক্রম সুরক্ষা নিশ্চিত করা - ব্যতিক্রমগুলি ছুঁড়ে ফেলা হলে অ্যাপ্লিকেশনটি স্ব-সামঞ্জস্যপূর্ণ থাকে। প্রথম দর্শনে এটি তুচ্ছ - যখন কোনও ব্যতিক্রমের ফলে প্রস্থানটি বেরিয়ে আসে, তখন সেই সুযোগের স্থানীয় ভেরিয়েবলগুলি ধ্বংস করতে হবে।
তবে যদি কোনও কনস্ট্রাক্টরের মধ্যে ব্যতিক্রম নিক্ষেপ ঘটে তবে কী হবে?
ঠিক আছে, অবজেক্টটি সম্পূর্ণরূপে নির্মিত হয়নি, তাই নিরাপদে বিনষ্ট করা যায় না। ব্যতিক্রম প্রস্তাব হওয়ার আগে কোনও প্রয়োজনীয় পরিষ্কার-পরিচ্ছন্নতা সম্পন্ন হয়েছে তা নিশ্চিত করতে কনস্ট্রাক্টরের প্রয়োজন অনুসারে ব্লক ব্যবহার করা উচিত। ব্যতিক্রমটি একবার যেখানে ক্ষেত্রের বাইরে অবজেক্টটি নির্মিত হয়েছিল তার বাইরে প্রস্তাবিত হয়ে গেলে কোনও ডিস্ট্রাক্টর কল আসবে না, কারণ বস্তুটি প্রথম স্থানে নির্মিত হয়নি।
বিশেষত সদস্যগুলির জন্য ডেটা ধ্বংসের জন্য ডেটা নির্মাণকারী বিবেচনা করুন। যদি সেগুলির মধ্যে একটি ব্যতিক্রম ছুঁড়ে ফেলে, তবে আপনার মূল কনস্ট্রাক্টর কোডটি মোটেও চলবে না - তবে সেই কনস্ট্রাক্টরের একটি অন্তর্নিহিত অংশ গঠনে এমন কিছু কোড থাকতে পারে। সফলভাবে নির্মিত হয়েছে এমন যে কোনও সদস্য স্বয়ংক্রিয়ভাবে ধ্বংস হয়ে যাবে। নির্মিত হয়নি এমন কোনও সদস্য (ব্যতীত এমন একটি সদস্যও অন্তর্ভুক্ত) নয়।
সুতরাং মূলত, আরআইআই হ'ল একটি নীতি যা নিশ্চিত করে যে সম্পূর্ণরূপে নির্মিত যা কিছু সময় মতো ধ্বংস হবে, বিশেষত ব্যতিক্রম ছোঁড়ার উপস্থিতিতে এবং যে কোনও বস্তু সম্পূর্ণরূপে নির্মিত হবে বা তা নেই (কোনও অর্ধ- নেই) নির্মিত অবজেক্টস যা আপনি নিরাপদে পরিষ্কার করতে জানেন না) can't যে সম্পদ বরাদ্দ করা হয় সেগুলিও মুক্ত হয়। এবং প্রচুর কাজ স্বয়ংক্রিয় হয়, সুতরাং প্রোগ্রামারকে এটি সম্পর্কে খুব বেশি চিন্তা করতে হবে না।