代码之家  ›  专栏  ›  技术社区  ›  Alexandre C.

函数try块,但不在构造函数中

  •  8
  • Alexandre C.  · 技术社区  · 14 年前

    只是个简短的问题。两者有什么区别吗

    void f(Foo x) try
    {
       ...
    }
    catch(exception& e)
    {
       ...
    }
    

    void f(Foo x)
    {
        try { ... }
        catch (exception& e)
        {
            ...
        }
    }
    

    ?

    如果不是,为什么函数try块用于(将构造函数的初始化列表放在一边)?如果的复制构造函数 Foo 在以下情况下引发异常 x 传递给 f ?

    4 回复  |  直到 14 年前
        1
  •  10
  •   CB Bailey    14 年前

        2
  •  6
  •   MSalters    14 年前

        3
  •  3
  •   davka    12 年前

    Dr. Dobb's article

    int f()
    try
    {
       ...
    }
    catch(Error &e)
    {
       // oops, can't return int from here!
    }
    

        4
  •  1
  •   Ferruccio bayda    14 年前