#include <iostream>
using namespace std;
int main()
{
int x;
cin>>x;
cout << "Before try \n";
try {
cout << "Inside try \n";
if (x <0)
{
throw x;
//cout << "After throw (Never executed) \n";
}
}
catch (int x ) {
cout << "Exception Caught \n";
}
catch (char x ) {
cout << "Exception hjCaught \n";
}
return 0;
}
如果在输入中我给出任何字符数据,为什么这不会抛出部分。我的代码是错误的,因为它适用于整数数据类型。
答案 0 :(得分:0)
我不明白为什么你添加了最后一个catch (char x)
条款。
当程序看起来像这样:
#include <iostream>
using namespace std;
int main()
{
int x;
cin>>x;
cout << "Before try \n";
try {
cout << "Inside try \n";
if (x <0)
{
throw x;
//cout << "After throw (Never executed) \n";
}
}
catch (int x ) {
cout << "Exception Caught \n";
}
}
似乎有效:
答案 1 :(得分:0)
根据这个程序,它会在正数时抛出异常。
但是当您在char
变量中输入int
输入时,输入将会失败,x中会有0
。
您可以使用此功能进行检查。
#include <iostream>
using namespace std;
int main()
{
int x;
cin >> x;
if (cin.fail())
{
cout << "x is " << x << endl;
}
cout << "Before try \n";
try
{
cout << "Inside try \n";
if (x < 0)
{
throw x;
//cout << "After throw (Never executed) \n";
}
}
catch (int x)
{
cout << "Exception Caught \n";
}
return 0;
}
char输入的程序输出将是
一
x是0
在尝试之前
内部尝试
因为x将为0所以它不会抛出异常,因为条件是 x <0