c++二级考题求助

来源:百度知道 编辑:UC知道 时间:2024/06/05 03:13:21
讲一下try和catch我不懂,
要求输出:
error
1
ERROR

#include <iostream.h>
int main()
{
try
{
throw("Error");
}
/********found********/
catch(char *str)
{
cout<<str<<endl;
}
try
{
throw((int)1);
}
/********found********/
catch(int i)
{
cout<<i<<endl;
}
try
{
throw(1);
throw("Error");
}
/********found********/
catch()
{
cout<<"ERROR"<<endl;
}
return 0;
}
不能改动其它的代码,只能在/********found********/下面改。

最后只需要在catch() 加上catch(int i)
原因1楼说了,throw(1); 后不会再throw("Error"); 了

大体上一但throw语句被执行,当前try中的内容就会被终止,而开始在对应当前try的catch中寻找第一个和throw语句抛出内容类型匹配的,并执行起对应的代码。

try
{
throw("Error");
throw(1);
}
cathc(int i)
{
}
/********found********/
catch(char *str)
{
cout<<str<<endl;
}
catch (void *x)
{
}

这里第二个throw是不会被执行的,然后因为抛出的是char *类型。第一个int类型的catch也不会被触发。后面的catch(void *x)因为靠后虽然类型满足但是也不会被触发。

另外,开发中的话在C++里用try/catch是邪路。try/catch在C++里就是一个摆设。