-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 回答