সুতরাং আমার প্রশ্নটি হ'ল - যদি কোনও ডেস্ট্রাক্টর থেকে ছুঁড়ে ফেলা ফলশ্রুতিহীন আচরণের ফলাফল করে তবে আপনি কীভাবে একজন ডেস্ট্রাক্টরের সময় ঘটে যাওয়া ত্রুটিগুলি পরিচালনা করবেন?
মূল সমস্যাটি হ'ল: আপনি ব্যর্থ হতে পারবেন না । ব্যর্থ হওয়া মানে কী, সর্বোপরি? যদি কোনও ডাটাবেসে লেনদেন করা ব্যর্থ হয় এবং এটি ব্যর্থ হয় (রোলব্যাক ব্যর্থ হয়), তবে আমাদের ডেটার অখণ্ডতার কি হবে?
যেহেতু ডেস্ট্রাক্টররা উভয়ই সাধারণ এবং ব্যতিক্রমী (ব্যর্থ) পাথের জন্য আহ্বান জানায় তাই তারা নিজেরাই ব্যর্থ হতে পারে না অন্যথায় আমরা "ব্যর্থ হতে ব্যর্থ" "
এটি একটি ধারণামূলকভাবে কঠিন সমস্যা তবে প্রায়শই সমাধানটি হ'ল ব্যর্থতা ব্যর্থ হতে পারে না তা নিশ্চিত করার একটি উপায় সন্ধান করা। উদাহরণস্বরূপ, কোনও ডাটাবেস কোনও বাহ্যিক ডেটা কাঠামো বা ফাইলের প্রতিশ্রুতি দেওয়ার আগে পরিবর্তনগুলি লিখতে পারে। যদি লেনদেন ব্যর্থ হয়, তবে ফাইল / ডেটা কাঠামোটি ফেলে দেওয়া যেতে পারে। তারপরে এটি নিশ্চিত করতে হবে যে বাহ্যিক কাঠামো থেকে পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ / পারমাণবিক লেনদেন ফাইল করে যা ব্যর্থ হতে পারে না।
বাস্তববাদী সমাধানটি সম্ভবত নিশ্চিত করে নিন যে ব্যর্থতায় ব্যর্থ হওয়ার সম্ভাবনাটি জ্যোতির্বিদ্যার দিক থেকে অসম্ভব, কারণ কিছু ক্ষেত্রে ব্যর্থ হওয়ার পক্ষে অসম্ভবকে অসম্ভব করে তোলা প্রায় অসম্ভব হয়ে উঠতে পারে।
আমার সবচেয়ে সঠিক সমাধানটি হ'ল আপনার ক্লিনআপবিহীন লজিককে এমনভাবে লিখুন যাতে ক্লিনআপ যুক্তি ব্যর্থ হয় না। উদাহরণস্বরূপ, যদি আপনি কোনও বিদ্যমান ডেটা কাঠামো পরিষ্কার করার জন্য একটি নতুন ডেটা স্ট্রাকচার তৈরি করার জন্য প্রলুব্ধ হন, তবে সম্ভবত আপনি সেই সহায়িকা কাঠামোটি আগে থেকেই তৈরি করতে চাইতে পারেন যাতে আমাদের এটি আর কোনও ডেস্ট্রাক্টরের ভিতরে তৈরি করতে না হয়।
স্বীকৃতভাবেই বলা হয়ে ওঠার চেয়ে এগুলি অনেক সহজ, তবে আমি এটির পক্ষে যেতে কেবল একমাত্র সত্যই সঠিক উপায়। কখনও কখনও আমি মনে করি ব্যতিক্রমী বিষয়গুলি থেকে দূরে সাধারণ নির্বাহের পথগুলির জন্য পৃথক ডেস্ট্রাক্টর যুক্তি লেখার দক্ষতা থাকা উচিত, যেহেতু কখনও কখনও ধ্বংসকারীরা উভয়কে সামলানোর চেষ্টা করে দ্বিগুণ দায়িত্বের মতো মনে করেন (উদাহরণস্বরূপ স্কোপ গার্ডদের যা সুস্পষ্ট বরখাস্তের প্রয়োজন ; যদি তারা ব্যতিক্রমী ব্যতিক্রমী ব্যতিক্রমী ধ্বংসের পথগুলি পৃথক করতে পারে তবে তাদের এটির প্রয়োজন হবে না)।
তবুও চূড়ান্ত সমস্যাটি হ'ল আমরা ব্যর্থ হতে পারি না এবং সব ক্ষেত্রে নিখুঁতভাবে সমাধান করার পক্ষে এটি একটি শক্ত ধারণামূলক নকশা সমস্যা। আপনি যদি জটিল নিয়ন্ত্রণ কাঠামোগুলিতে খুব বেশি সংখ্যক টিনএই অবজেক্টগুলির সাথে একে অপরের সাথে আলাপচারিতা না জড়ান এবং এটির পরিবর্তে আপনার নকশাগুলি কিছুটা বাল্কিয়ার ফ্যাশনে মডেল করেন (উদাহরণস্বরূপ: পুরো কণাকে ধ্বংস করার জন্য ধ্বংসকারী দিয়ে কণা ব্যবস্থা) সিস্টেম, কণা অনুযায়ী পৃথক অ-তুচ্ছ ডেস্ট্রাক্টর নয়)। আপনি যখন এই ধরণের মোটা স্তরে আপনার নকশাগুলি মডেল করেন, তখন আপনার সাথে মোকাবিলা করার জন্য অ-তুচ্ছ ডেস্ট্রাক্টর কম থাকে এবং আপনার ডিস্ট্রাক্টর ব্যর্থ হতে না পারে তা নিশ্চিত করার জন্য প্রায়শই মেমরি / প্রসেসিং ওভারহেডের যা প্রয়োজন তা সহ্য করতে পারেন।
এবং এটি প্রাকৃতিকভাবে সহজ সমাধানগুলির মধ্যে একটি হ'ল প্রায়শই প্রায়শই ধ্বংসকারীদের ব্যবহার করা। উপরের কণার উদাহরণে, সম্ভবত কোনও কণা ধ্বংস / অপসারণের পরে, কিছু জিনিস করা উচিত যা কোনও কারণেই ব্যর্থ হতে পারে। সেক্ষেত্রে কণার ড্টারের মাধ্যমে এই জাতীয় যুক্তি চাওয়ার পরিবর্তে যেটি ব্যতিক্রমী পথে চালিত হতে পারে আপনি তার পরিবর্তে কণা সিস্টেম দ্বারা যখন এটি কোনও কণা অপসারণ করেন তখন এটি সম্পন্ন করতে পারবেন । একটি কণা অপসারণ সর্বদা একটি ব্যতিক্রমী পথে চলতে পারে। যদি সিস্টেমটি ধ্বংস হয়ে যায়, তবে এটি কেবল সমস্ত কণা মুছে ফেলতে পারে এবং ব্যর্থ হতে পারে এমন স্বতন্ত্র কণা অপসারণ যুক্তি দিয়ে বিরক্ত করতে পারে না, যখন যুক্তিটি ব্যর্থ হতে পারে কেবল কণা সিস্টেমের সাধারণ সম্পাদনের সময় কার্যকর করা হয় যখন এটি এক বা একাধিক কণা অপসারণ করে।
আপনি নন-তুচ্ছ ডেস্ট্রাক্টরগুলির সাথে প্রচুর টিনএজ অবজেক্টের সাথে व्यवहार করা এড়াতে এমন সমাধানগুলি প্রায়শই ঘটে থাকে। আপনি যখন কোনও জগতে জড়িয়ে পড়তে পারেন যেখানে ব্যতিক্রম-সুরক্ষা হওয়া প্রায় অসম্ভব বলে মনে হয় যখন আপনি প্রচুর টিনএজ অবজেক্টগুলিতে জড়িয়ে পড়েন যে সমস্ত অ-তুচ্ছ ডেক্টর রয়েছে।
নোহ্র / নোসেপস্টকে আসলে কোনও সংকলক ত্রুটিতে অনুবাদ করা যদি এটি নির্দিষ্ট করে (ভার্চুয়াল ফাংশনগুলি যা এর বেস শ্রেণীর নোট বাদে স্পেসিফিকেশনের উত্তরাধিকারী হওয়া উচিত) যদি নিক্ষেপ করতে পারে এমন কোনও কিছু আহ্বান করার চেষ্টা করে তবে এটি অনেকটাই সহায়তা করবে। এইভাবে আমরা সংকলন-সময় এই সমস্ত জিনিসগুলি ধরতে সক্ষম হব যদি আমরা আসলে অজান্তে কোনও ধ্বংসকারীকে লিখি যা ছুঁড়ে মারতে পারে।