首先我在cplusplus.com上找到了以下引用:
catch格式类似于一个常规函数,它始终至少有一个参数。
但我尝试了这个:
try
{
int kk3,k4;
kk3=3;
k4=2;
throw (kk3,"hello");
}
catch (int param)
{
cout << "int exception"<<param<<endl;
}
catch (int param,string s)
{
cout<<param<<s;
}
catch (char param)
{
cout << "char exception";
}
catch (...)
{
cout << "default exception";
}
编译器对于带括号和多个参数的throw不会报错,但是它实际上会抱怨有多个参数的catch,尽管参考文献中并没有这样说明。我感到困惑了。
try
和catch
是否允许这种复杂性?如果我想抛出一个包含一个或多个变量(具有相同类型或不同类型)的异常,该怎么办?
(kk3, "hello")
,你会抛出"hello"
。 - user395760