Bu, bir istisnaya bazı bilgiler eklemek istediğimde sıklıkla yaptığım şeyin bir örneğidir:
std::stringstream errMsg;
errMsg << "Could not load config file '" << configfile << "'";
throw std::exception(errMsg.str().c_str());
Bunu yapmanın daha güzel bir yolu var mı?
std::stringbir sürer örtük bir Oluşturucu sahip const char*...
std::exceptionalt sınıflarının perde arkası uygulamasının bir parçası gibi görünüyor std::runtime_errorve ve std::logic_error. Apart standardıyla tanımlanır olanlardan ait MSVS' versiyonu <exception>da iki inşaatçı, bir alma içerir (const char * const &)ve diğer alma (const char * const &, int). Özel bir değişken ayarlamak için kullanılırlar const char * _Mywhat; eğer _Mywhat != nullptr, o zaman what()varsayılan olarak onu geri döndürür. Ona dayanan kod muhtemelen taşınabilir değildir.
std∷exceptionile birchar*kurucuya sahip değilsiniz.