আমি যখন ব্যতিক্রম কিছু তথ্য যুক্ত করতে চাই তখন আমি প্রায়শই এটির একটি উদাহরণ:
std::stringstream errMsg;
errMsg << "Could not load config file '" << configfile << "'";
throw std::exception(errMsg.str().c_str());
এটি করার কোন সুন্দর উপায় আছে?
std::string
এতে একটি নিখুঁত নির্মাণকারী রয়েছে যা const char*
...
std::exception
শিশুদের ক্লাস প্রয়োগের নেপথ্যে 'এমএস'র অংশ বলে মনে হয় এবং তাদের সংস্করণ std::runtime_error
এবং এর সংস্করণ ব্যবহার করে std::logic_error
। স্ট্যান্ডার্ড দ্বারা সংজ্ঞায়িত ছাড়াও, এমএসভিএস'র সংস্করণে <exception>
আরও দু'জন কনস্ট্রাক্টর রয়েছে, একটি গ্রহণ (const char * const &)
এবং অন্যজন গ্রহণ করে (const char * const &, int)
। এগুলি একটি ব্যক্তিগত ভেরিয়েবল সেট করতে ব্যবহৃত হয় const char * _Mywhat
; যদি তা ফেরত দেয় _Mywhat != nullptr
তবে what()
ডিফল্ট হয়। কোড যা এটির উপর নির্ভর করে সম্ভবত পোর্টেবল নয়।
std∷exception
দিয়ে কোনও কনস্ট্রাক্টর নেইchar*
।