1

我想抛出这样的异常:

if (...) {  
    throw "not found";  
}

并像这样抓住它:

try {  
    myfunction();  
} catch (const char * msg) {  
    cout << msg << endl;  
}

但后来它说

terminate called after throwing an instance of 'char const*'

为什么它调用终止而不抛出我的“未找到”?

编辑:

我把它改成这样:

try {
    throw "not found";
} catch (const char * msg) {
    cout << "test" << endl;
} catch(...) {
    cout << "test" << endl;
}

我得到同样的错误!

EDIT2:当我不调用上面的特定方法时,它可以工作!但是我不明白这个方法与异常有什么关系,除了上面提到的myfunction()之外,我没有在任何其他函数中使用它。让我再测试一些,然后我会回复你!

编辑3:

哦,我的,这很尴尬。看起来我调用了错误的函数。很抱歉给您带来了这种可耻的经历!

4

1 回答 1

1

如果您在 try/catch 块之外使用 throw,则会调用 terminate。确保抛出的函数在 try 块中。

#include <iostream>

void myFunc()
{
    throw "Throwing!";
}

int main()
{
    try
    {
        myFunc();
    }
    catch(...)
    {
        std::cout << "Works fine.";
    }

    myFunc(); // Terminate gets called.

    return 0;

}
于 2013-02-24T00:33:24.860 回答