为什么?(三分)在catch块中存在
why ... (three points) in catch block is exist?
在try-catch语句中,我们可以执行以下操作:
try{}
catch(...){}
据我所知,...
意味着任何例外。
我的问题是:为什么C++标准选择这种方式(...)
而不仅仅是()
?例如,在函数中,如果不需要参数,只需放入()
:
void foo();
它与可变模板有任何关系吗?
它与可变模板无关,因为这些模板出现在C++11中,而catch (...)
几乎从一开始就存在(大约20年前)。
至于他们为什么选择(...)
而不是()
,你可以问Bjarne Stroustrup,但这似乎并不重要。无论如何,这个功能并没有经常使用。在C++中,(...)
通常表示"任何类型的任意数量的事物",而()
通常表示"什么都没有"。根据您的观点,其中任何一个可能更适合于"捕获所有异常"。
catch()
将强烈暗示没有任何东西传递给那个特定的catch块。
但事实并非如此,
catch(...){
throw;
}
实际上重新抛出...
捕获的异常
相关文章:
- C++模板来检查友元函数的存在
- 既然存在危险,为什么项目要使用-I include开关
- 我们可以访问一个不存在的联盟的成员吗
- C++:对不存在的命名空间使用命名空间指令
- C++quit()函数中可能存在作用域问题
- C++擦除(如果存在)
- 为什么catch中的代码没有被执行
- g++ 说函数不存在,即使包含正确的标头
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 有了gcc,是否可以链接库,但前提是它存在
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- catch框架有没有办法比较流或文件
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- C++Builder中的OnClick事件签名存在问题
- 如何正确地将分支添加到已存在的树中
- 我知道函数调用中存在歧义.有没有办法调用foo()函数
- 为什么?(三分)在catch块中存在
- 当错误存在时,为什么我的程序不执行第二个catch块
- 访问可能不存在的const vector成员- try/catch或if (count != 0)
- 如果异常保存在std::exception_ptr中,那么在catch语句之外使用异常是否安全?