これは、例外に情報を追加したいときによく行うことの例です。
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
。標準で定義されているものとは別に、MSVSのバージョンには、<exception>
さらに2つのコンストラクターが含まれ(const char * const &)
てい(const char * const &, int)
ます。これらは、プライベート変数を設定するために使用されますconst char * _Mywhat
。ifの場合_Mywhat != nullptr
、what()
デフォルトでそれを返します。それに依存するコードはおそらく移植性がありません。
std∷exception
持つコンストラクターはありませんchar*
。