从noexcept函数参数的构造函数引发的异常是否会立即导致对std :: terminate()的调用?

马斯提斯

给定以下类声明:

class phone_number
{
public:
    explicit phone_number( std::string number ) noexcept( std::is_nothrow_move_constructible< std::string >::value );
}

phone_number::phone_number( std::string number ) noexcept( std::is_nothrow_move_constructible< std::string >::value )
    : m_originalNumber{ std::move( number ) }
{

}

std::terminate()如果从字符串构造函数引发异常,那么由于noexcept规范,以下代码行是否最终会立即调用

const phone_number phone("(123) 456-7890");
TerraPass

由于所有参数都是调用函数之前进行求值的因此由参数的构造函数发出的异常不会违反noexcept函数本身的协定。

为了证实这一点,这是我尝试过的方法,近似于您的示例:

class A
{
public:
    A(const char *)
    {
        throw std::exception();
    }
};

void f(A a) noexcept
{

}

int main()
{   
    try
    {
        f("hello");
    }
    catch(std::exception&)
    {
        cerr<< "Fizz..." << endl;
    }
    return 0;
}

毫不奇怪,输出是Fizz...,程序正常退出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

反射性地调用引发异常的构造函数

来自分类Dev

调用Fragment构造函数导致异常,kotlin?

来自分类Dev

是否不为函数参数调用构造函数?

来自分类Dev

Babel 6对父对象进行超级构造函数调用会引发异常

来自分类Dev

Babel 6对父对象进行超级构造函数调用会引发异常

来自分类Dev

MSVS 2015,C++,使用参数调用构造函数会导致错误

来自分类Dev

引发异常时不调用Move构造函数

来自分类Dev

WCF-使用await键调用函数会引发异常

来自分类Dev

在某些情况下,使用std :: set_terminate无法捕获C ++纯虚函数调用吗?

来自分类Dev

引发'boost :: python :: error_already_set'实例后调用boost python错误消息:terminate

来自分类Dev

构造函数使用参数调用构造函数

来自分类Dev

从防护类析构函数抛出异常会导致std :: terminate

来自分类Dev

重载括号()是否会影响构造函数调用?

来自分类Dev

Java是否会自动调用抽象类的构造函数?

来自分类Dev

构造函数中引发了异常:调用了析构函数吗?

来自分类Dev

构造函数中引发了异常:调用了析构函数吗?

来自分类Dev

调用解构函数时,这是否会导致内存泄漏?

来自分类Dev

调用创建对象的函数是否会导致内存泄漏?

来自分类Dev

调用解构函数时,这是否会导致内存泄漏?

来自分类Dev

Destroyer 在构造函数之后立即被调用

来自分类Dev

在函数中调用缺少参数的构造函数

来自分类Dev

如果函数提前返回或引发异常,是否将调用对象的析构函数?

来自分类Dev

是否有Java的立即调用匿名函数?

来自分类Dev

从构造函数中调用构造函数并捕获异常

来自分类Dev

从C调用带有函数参数的Rust函数会导致SegFault

来自分类Dev

java-直接从函数调用分配变量(没有new())会引发异常吗?

来自分类Dev

从BrowserControl的ScriptingObject中的异步方法调用动态回调函数会引发异常

来自分类Dev

调用构造函数时异常的C ++行为

来自分类Dev

调用构造函数时出现nullpointer异常

Related 相关文章

  1. 1

    反射性地调用引发异常的构造函数

  2. 2

    调用Fragment构造函数导致异常,kotlin?

  3. 3

    是否不为函数参数调用构造函数?

  4. 4

    Babel 6对父对象进行超级构造函数调用会引发异常

  5. 5

    Babel 6对父对象进行超级构造函数调用会引发异常

  6. 6

    MSVS 2015,C++,使用参数调用构造函数会导致错误

  7. 7

    引发异常时不调用Move构造函数

  8. 8

    WCF-使用await键调用函数会引发异常

  9. 9

    在某些情况下,使用std :: set_terminate无法捕获C ++纯虚函数调用吗?

  10. 10

    引发'boost :: python :: error_already_set'实例后调用boost python错误消息:terminate

  11. 11

    构造函数使用参数调用构造函数

  12. 12

    从防护类析构函数抛出异常会导致std :: terminate

  13. 13

    重载括号()是否会影响构造函数调用?

  14. 14

    Java是否会自动调用抽象类的构造函数?

  15. 15

    构造函数中引发了异常:调用了析构函数吗?

  16. 16

    构造函数中引发了异常:调用了析构函数吗?

  17. 17

    调用解构函数时,这是否会导致内存泄漏?

  18. 18

    调用创建对象的函数是否会导致内存泄漏?

  19. 19

    调用解构函数时,这是否会导致内存泄漏?

  20. 20

    Destroyer 在构造函数之后立即被调用

  21. 21

    在函数中调用缺少参数的构造函数

  22. 22

    如果函数提前返回或引发异常,是否将调用对象的析构函数?

  23. 23

    是否有Java的立即调用匿名函数?

  24. 24

    从构造函数中调用构造函数并捕获异常

  25. 25

    从C调用带有函数参数的Rust函数会导致SegFault

  26. 26

    java-直接从函数调用分配变量(没有new())会引发异常吗?

  27. 27

    从BrowserControl的ScriptingObject中的异步方法调用动态回调函数会引发异常

  28. 28

    调用构造函数时异常的C ++行为

  29. 29

    调用构造函数时出现nullpointer异常

热门标签

归档