-2

次の簡単なコードを実行しようとしていますが、取得し続けます:

libc++abi.dylib: terminate called throwing an exception

これが何を意味するのか説明してもらえますか?

コード:

int main()
{
    ifstream in;
    cout << "Enter name: ";
    string s = GetLine();
    in.open(s.c_str());
    if (in.fail())
        Error("Error your file was not found");
    return 0;
}

エラーは次のとおりです。

ErrorException::ErrorException(string m="unspecified custom error") 
: msg(m) {
}

ErrorException::~ErrorException() throw() {}

const char* ErrorException::what() const throw() {
return this->msg.c_str(); 
}

void Error(string str) {
    ErrorException err(str);
    throw err;
}

指定したエラー メッセージが表示されるはずですが、表示されません。誰でも理由を見ることができますか?

4

1 に答える 1

1

キャッチしない例外をスローします。これにより、プログラムが終了します。エラーメッセージを受け取ったり、印刷したり、そのようなことをするためのコードはありません。例外をキャッチしたい場合は、try/catchブロックを使用します。このcatch部分では、エラー メッセージに対して何をしてもかまいません。

次のようなものを試してください:

int main()
{
    ifstream in;
    cout << "Enter name: ";
    string s = GetLine();
    try
    {
       in.open(s.c_str());
       if (in.fail())
           Error("Error your file was not found");
    }
    catch (ErrorException& e)
    {
       cerr << e.what() << endl;
    }
    return 0;
}
于 2013-01-12T17:02:23.060 に答える