所以我用throw语句和嵌套前面描述函数的其他函数声明和定义了一个函数。我的书在C++中说,如果嵌套函数throw数据类型与catch参数不匹配,那么调用函数将被终止。但是,我的代码不能这样做。相反,它只是跳过抛出的异常,就好像它甚至不在首位抛出一样。这里的代码片段应该使我所说的更清楚。尝试抛出catch C++嵌套函数
#include<iostream>
#include<string>
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;
}
}
这只是显示您好,但不应该这样,因为中止-3是在其与上述数据类型为字符串setlength的else if语句,但渔获有一个int数据类型。
请提供样本输入和输出 – Zerp
您是否尝试过查看您的代码?一行一行地运行它。它应该显示你好 – KRUKUSA
我同意KRUKUSA:这应该显示“你好”。你为什么想别的?也许你有&&和||困惑? –