所以我使用throw语句和嵌套前面描述的函数的另一个函数声明并定义了一个函数 . 我的书在c中说如果嵌套函数throw数据类型与catch参数不匹配,那么调用函数将被终止 . 但是我的代码不会这样做 . 相反,它只是跳过抛出的异常,就好像它甚至没有被抛出一样 . 这是我应该说清楚的代码片段 .
#include
#include
using namespace std;
void setlength(double w)
{
if (w >= 0)
{
cout << "We're good";
}
else if (w > -5 && w < 0)
{
string sample = "Hello";
throw sample;
}
}
void setwaidth(double w)
{
try
{
setlength(-3);
cout << "OK";
}
catch (int a)
{
cout << "Error has occurred";
}
if (w >= 0)
{
cout << "We're good";
}
else if (w > -5 && w < 0)
{
string sample= "Hello";
throw sample;
}
}
int main()
{
try
{
setwaidth(-3);
cout << "OK";
}
catch (string a)
{
cout << a;
}
}
这只显示Hello,但不应该中止,因为-3在setlength的else if语句中,数据类型为string,但catch具有int数据类型 .