এই বিভাগে, আমরা দেখব কিভাবে ব্যতিক্রম পরিচালনার জন্য ক্যাচ ব্লক ব্যবহার করতে হয় এবং C++ এ টাইপ রূপান্তর করতে হয়।
প্রথমে, আসুন আমরা একটি কোড দেখি, এবং আমরা দেখব আউটপুট কি হবে এবং কিভাবে তারা তৈরি করছে।
উদাহরণ
#include <iostream> using namespace std; int main() { try{ throw 'a'; } catch(int a) { cout << "Integer value is caught :" << a; } catch(...) { cout << "Entering into default catch block"; } }
আউটপুট
Entering into default catch block
তাহলে এর পেছনের কারণ কী। কেন এই ধরনের আউটপুট উৎপন্ন হয়? আমরা দেখতে পাচ্ছি অক্ষর 'a' নিক্ষেপ করা হয়েছে, কিন্তু প্রথম ক্যাচ ব্লকটি int-এর জন্য। যদি আমরা মনে করি যে 'a'-এর ASCII একটি পূর্ণসংখ্যা, তাই প্রথম ব্লকে প্রবেশ করা হবে, কিন্তু এই ধরনের রূপান্তরগুলি ক্যাচ ব্লকের জন্য প্রযোজ্য নয়৷
আরেকটি উদাহরণ দেখা যাক। এই উদাহরণে আমরা দেখতে পাব যে রূপান্তর কনস্ট্রাক্টরকে নিক্ষেপ করা বস্তুর জন্য বলা হয় না।
উদাহরণ
#include <iostream> using namespace std; class TestExcept1 {}; class TestExcept2 { public: TestExcept2 (const TestExcept1 &e ){ // Defining the Conversion constructor cout << "From the Conversion constructor"; } }; main() { try{ TestExcept1 exp1; throw exp1; } catch(TestExcept2 e2) { cout << "Caught TestExcept2 " << endl; } catch(...) { cout << "Entering into default catch block " << endl; } }
আউটপুট
Entering into default catch block
প্রাপ্ত টাইপ অবজেক্টগুলিকে বেস টাইপ অবজেক্টে রূপান্তরিত করা হয় না যখন ডেরাইভ টাইপ অবজেক্টগুলি নিক্ষেপ করা হয়।