永发信息网

c++抛出异常时try{}的问题,求助

答案:2  悬赏:0  手机版
解决时间 2021-02-28 02:42
  • 提问者网友:蓝莓格格巫
  • 2021-02-27 08:24
#include
using namespace std;
void test(float a)throw(int)
{

if(a>90)
throw 'A';
else if(a>=60)
throw a;
else if(a>30)
throw 1;
else
throw &a;

}
void main()
{
cout<<"result:\n";
try
{test(99);test(88);test(59);test(21); }
catch(char a)
{
cout<<"pretty good!\n";
}catch(float a)
{cout<<"well done!\n";}
catch(int a)
{cout<<"just so so!\n";}
catch(float *a)
{cout<<"you should work more hard!\n";}
}
为啥只能输出try函数中的第一个函数,而下面的函数都没运行。。。而且
void test(float a)throw(int)中的throw()中不管啥类型结果都是运行try中第一个函数,
随后就结束了。。。是try函数中只要一抛出就不在运行接下去的函数?书上好像不是这样的。。。还是编译器问题?
最佳答案
  • 五星知识达人网友:低血压的长颈鹿
  • 2021-02-27 09:15
因为你声明了只throw int。
你把throw(int)删了就什么都能扔了
或者定义
void test(float a) throw (double,int,char,float*);
表示这些都能被扔

而且只要throw了,就直接跳到最近的catch,然后从catch的下一句继续执行,throw后面的到catch都被无视
全部回答
  • 1楼网友:逐風
  • 2021-02-27 10:40
第一个更快捷和当机立断
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯