相关疑难解决方法(0)

在C++中执行默认的catch throw语句传递值或引用

默认的catch语句如何catch(...) {}通过值或引用捕获异常?

其次,默认抛出如何throw;通过值或引用抛出异常?

c++ exception

14
推荐指数
1
解决办法
5369
查看次数

按值或引用抛出异常

从这个答案/sf/answers/2571688381/:

没有操作数的throw-expression重新抛出当前处理的异常.使用现有临时值重新激活该例外; 没有创建新的临时异常对象. - ISO/IEC 14882:2011第15.1节.8

那么为什么我从这段代码中得到这个结果呢?

码:

#include <iostream>

class my_exception: public std::exception{
public:
    int value;
};
int main()
{
    my_exception ex;
    ex.value=1;
    try{
        throw ex;
    }
    catch(my_exception& e){
        e.value=2;
    }
    std::cout << ex.value;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

实际结果:

1

我认为它应该是2,取决于标准配额.我错过了什么?

c++ exception throw c++11

4
推荐指数
1
解决办法
961
查看次数

为什么......(三点)在catch块中存在?

在 try catch 语句中,我们可以执行以下操作:

try{}
catch(...){}
Run Code Online (Sandbox Code Playgroud)

据我所知,...意味着任何例外。

我的问题是:为什么 C++ 标准选择这种方式(...)而不是仅仅选择这种方式()?而例如,在函数中,如果您不需要参数,您只需输入()

void foo();
Run Code Online (Sandbox Code Playgroud)

它与可变参数模板有任何关系吗?

c++ catch-block language-lawyer c++11

1
推荐指数
1
解决办法
1732
查看次数

标签 统计

c++ ×3

c++11 ×2

exception ×2

catch-block ×1

language-lawyer ×1

throw ×1