1. ホーム
  2. c++

[解決済み] c++ exception : std::string を投げる。

2023-08-03 01:46:58

質問

C++のメソッドが何か変なことに遭遇し、回復できないときに例外を投げたいと思います。この場合 std::string のポインタを投げてもいいのでしょうか?

私が楽しみにしていたのは、こちらです。

void Foo::Bar() {
    if(!QueryPerformanceTimer(&m_baz)) {
        throw new std::string("it's the end of the world!");
    }
}

void Foo::Caller() {
    try {
        this->Bar(); // should throw
    }
    catch(std::string *caught) { // not quite sure the syntax is OK here...
        std::cout << "Got " << caught << std::endl;
    }
}

どのように解決するのですか?

はい。 std::exception は、C++標準ライブラリの基本例外クラスです。 文字列はそれ自体が使用中に例外を投げる可能性があるので、例外クラスとして使用するのは避けた方がよいかもしれません。もしそうなったら、あなたはどこにいるのでしょうか?

boostには優れた ドキュメント があります。一読の価値があります。