C++ এ, এক্সেপশন হ্যান্ডলিং হল রানটাইম ত্রুটিগুলি পরিচালনা করার একটি প্রক্রিয়া। ব্যতিক্রম হল একটি ইভেন্ট যা C++ এ রানটাইমে নিক্ষেপ করা হয়। সমস্ত ব্যতিক্রম std::exception class থেকে প্রাপ্ত। এটি একটি রানটাইম ত্রুটি যা পরিচালনা করা যেতে পারে। এটি ব্যতিক্রম বার্তা প্রিন্ট করে এবং প্রোগ্রামটি বন্ধ করে দেয়, যদি আমরা ব্যতিক্রমটি পরিচালনা না করি।
C++ স্ট্যান্ডার্ডে ব্যতিক্রমগুলিকে
C++-এ সাধারণ ব্যতিক্রম ক্লাস হল −
Sr.No. | ব্যতিক্রম এবং বর্ণনা |
---|---|
1 | std::exception এটি সমস্ত স্ট্যান্ডার্ড C++ ব্যতিক্রমগুলির একটি ব্যতিক্রম এবং প্যারেন্ট ক্লাস। |
2 | std::bad_cast এটি dynamic_cast দ্বারা নিক্ষিপ্ত একটি ব্যতিক্রম। |
3 | std::bad_exception এই ব্যতিক্রমটি একটি C++ প্রোগ্রামে অপ্রত্যাশিত ব্যতিক্রমগুলি পরিচালনা করতে ব্যবহৃত হয়। |
4 | std::bad_alloc এটা সাধারণত নতুন দ্বারা নিক্ষিপ্ত করা হয়. |
5 | std::logic_failure এই ব্যতিক্রমটি একটি কোড পড়ার মাধ্যমে সনাক্ত করা যেতে পারে। |
6 | std::runtime_error এই ব্যতিক্রম একটি কোড পড়ার দ্বারা সনাক্ত করা যাবে না. |
7 | std::bad_typeid এটি টাইপড দ্বারা নিক্ষিপ্ত একটি ব্যতিক্রম। |
কীওয়ার্ড
ব্যতিক্রম পরিচালনায় 3টি কীওয়ার্ড রয়েছে:চেষ্টা করুন, ধরুন এবং নিক্ষেপ করুন৷
৷চেষ্টা/ক্যাচ ব্লক
C++-এ, ট্রাই/ক্যাচ স্টেটমেন্ট ব্যবহার করে ব্যতিক্রম হ্যান্ডলিং করা হয়। ব্যতিক্রম ঘটতে পারে এমন কোডটি ট্রাই ব্লক দ্বারা স্থাপন করতে ব্যবহৃত হয়। ক্যাচ ব্লক ব্যতিক্রম পরিচালনা করতে ব্যবহৃত হয়।
উদাহরণ কোড
#include <iostream> using namespace std; class Sample1 { public: Sample1() { cout << "Construct an Object of sample1" << endl; } ~Sample1() { cout << "Destruct an Object of sample1" << endl; } }; class Sample2 { public: Sample2() { int i=7; cout << "Construct an Object of sample2" << endl; throw i; } ~Sample2() { cout << "Destruct an Object of sample2" << endl; } }; int main() { try { Sample1 s1; Sample2 s2; } catch(int i) { cout << "Caught " << i << endl; } }
আউটপুট
Construct an Object of sample1 Construct an Object of sample2 Destruct an Object of sample1 Caught 7
ব্যবহারকারী সংজ্ঞায়িত ব্যতিক্রম
আমরা উত্তরাধিকারসূত্রে এবং ব্যতিক্রম শ্রেণীর কার্যকারিতা ওভাররাইড করে আমাদের নিজস্ব ব্যতিক্রম সংজ্ঞায়িত করতে পারি।
উদাহরণ কোড
#include <iostream> #include <exception> using namespace std; struct DivideByZero : public exception { const char * what () const throw () { return "My Exception"; } }; int main() { try { throw DivideByZero(); } catch(DivideByZero& e) { cout << "Exception caught" << endl; cout << e.what() << endl; } catch(exception& e) { } }
আউটপুট
Exception caught My Exception what() = A public method provided by exception class and it has been overridden by all the child exception classes. It returns the cause of an exception.৷