我想抛出这样的例外:
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()之外的任何其他函数中使用它。让我再测试一下,然后我会回复你!</ p>
EDIT3:
哦,我的,这很尴尬。看起来我调用了错误的功能。我很遗憾因为这种可耻的经历而困扰你!
答案 0 :(得分: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;
}