ব্যতিক্রম ছোঁড়ার এবং ধরার প্রচলিত উপায় হ'ল একটি ব্যতিক্রম বস্তু নিক্ষেপ করা এবং এটি রেফারেন্সের মাধ্যমে ধরা (সাধারণত const
রেফারেন্স)। সি ++ ভাষার ক্ষেত্রে ব্যতিক্রমী অবজেক্টটি তৈরি করতে এবং উপযুক্ত সময়ে এটি সঠিকভাবে পরিষ্কার করার জন্য উপযুক্ত কোড উত্পন্ন করার জন্য সংকলকটির প্রয়োজন।
গতিশীলভাবে বরাদ্দ হওয়া বস্তুটিতে পয়েন্টার নিক্ষেপ করা কখনই ভাল ধারণা নয়। ব্যতিক্রমগুলি ত্রুটির শর্তগুলির মধ্যে আপনাকে আরও শক্তিশালী কোড লিখতে সক্ষম করার কথা বলে। আপনি যদি প্রচলিত পদ্ধতিতে একটি ব্যতিক্রম বস্তু নিক্ষেপ করেন তবে আপনি নিশ্চিত হতে পারেন যে এটি কোনও ক্যাচ ক্লজ দ্বারা সঠিক ধরণের নামকরণ করে ধরা হয়েছে catch (...)
কিনা, এটি দ্বারা এটি পুনরায় নিক্ষেপ করা হয়েছে কিনা তা উপযুক্ত সময়ে সঠিকভাবে ধ্বংস হয়ে যাবে কিনা sure (এটি কখনই ধরা পড়ে না তবে একমাত্র ব্যতিক্রম হ'ল এটি যে কোনও উপায়ে আপনি দেখুন না কেন এটি একটি পুনরুদ্ধারযোগ্য পরিস্থিতি))
আপনি যদি গতিশীলভাবে বরাদ্দকৃত অবজেক্টে কোনও পয়েন্টার ফেলে দেন তবে আপনাকে অবশ্যই নিশ্চিত হতে হবে যে কল ব্যয়টি আপনার ব্যতিক্রমটি ছুঁড়ে ফেলার মতো দেখতে চায় সেখানে একটি ক্যাচ ব্লক রয়েছে যা সঠিক পয়েন্টারটির নাম দেয় এবং উপযুক্ত delete
কল থাকে has আপনার ব্যতিক্রম কখনই ধরা পড়বে catch (...)
না যদি না সেই ব্লক ব্যতিক্রমটিকে পুনরায় নিক্ষেপ করে যা ব্যতীত সঠিকভাবে আচরণ করে এমন অন্য ক্যাচ ব্লকের দ্বারা ধরা পড়ে।
কার্যকরভাবে, এর অর্থ হল আপনি ব্যতিক্রম হ্যান্ডলিং বৈশিষ্ট্যটি গ্রহণ করেছেন যা শক্ত কোড লিখতে সহজ করে তোলে এবং সমস্ত পরিস্থিতিতে সঠিক যে কোডটি লিখতে খুব শক্ত করে তোলে। এটি এই বিষয়টিকে একপাশে ফেলে দিচ্ছে যে ক্লায়েন্ট কোডের জন্য লাইব্রেরি কোড হিসাবে কাজ করা প্রায় অসম্ভব হয়ে উঠবে যা এই বৈশিষ্ট্যটি প্রত্যাশা করবে না।
throw gcnew
দরকারী যেমন। আপনি যদি ব্যতিক্রমটি ধরতে পরিচালিত কোড চান। কেউ কি আমাকে এটি সংশোধন করতে পারেন?