Ism*_*ush 3 c++ exception try-catch
首先我在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";
}
Run Code Online (Sandbox Code Playgroud)
编译器不会抱怨带有大括号和多个参数的throw.但它实际上抱怨了多个参数的捕获,尽管参考文献说的是什么.我糊涂了.是否try和catch允许这种多重与否?如果我想抛出一个包含多个变量的异常,或者没有相同的类型,该怎么办?
Arm*_*yan 10
(kk3,"hello")是一个逗号表达式.逗号表达式计算从左到写的所有参数,结果是最右边的参数.所以在表达中
int i = (1,3,4);
Run Code Online (Sandbox Code Playgroud)
我变成了4.
如果你真的想抛出它们(出于某种原因),你可以这样抛出
throw std::make_pair(kk3, std::string("hello"));
Run Code Online (Sandbox Code Playgroud)
并抓住这样:
catch(std::pair<int, std::string>& exc)
{
}
Run Code Online (Sandbox Code Playgroud)
和catch子句都有一个确切的说法或
...
Run Code Online (Sandbox Code Playgroud)
HTH
| 归档时间: |
|
| 查看次数: |
8872 次 |
| 最近记录: |