为什么lambda没有函数try块
Why there is no function-try-block for lambda?
void foo() try {} catch (...) {}
// OK, function-try-block
[]() try {} catch (...) {} ();
// error: expected ‘{’ before ‘try’
[]() { try {} catch (...) {} } ();
// OK, extra curly braces`
为什么不允许使用第二种变体?
最初,引入函数try块是为了能够捕获子对象的构造函数或析构函数中抛出的异常。为了保持一致性,语法被扩展到了普通函数。
当然,可以为lambdas引入这样的语法。然而,与构造函数和析构函数相比,简单地将try块封装在另一对{ }
中没有实际优势,只是后者看起来不那么晦涩。
相关文章:
- 是否有理由大多数/所有 try-catch 示例只对 throw 语句使用 void 子函数
- 构造函数中的异常:init() 方法、指针、大型 try/catch 或
- 为什么不使用函数try块声明main()?
- 从catch块调用异常类中的函数并不是打印从try块传递的值
- 处理构造函数C++中的Try-catch块
- 如何使用 try 和 catch 中止函数
- 异常从具有函数 try-block 的构造函数中引发两次
- 构造函数作为函数 try 块 - 异常中止程序
- 我们如何从它的函数 try 处理程序跳回到构造函数体?
- 函数try catch语法和main
- 函数try块的用途是什么
- mfccdatabase::OpenEx函数如何知道它在try/catch块中
- Visual c++ 2008中的函数try块
- 构造函数的function-try-block处理程序中的返回语句
- Try/catch块用于在构造函数内部将简单内存分配到公共原始指针
- 对裸函数使用Try/Catch
- 为什么我们需要一个函数try块
- 非构造函数上的Do function try块有任何缺点
- 通过模板元编程用try包装任意函数调用.catch块在现代c++中
- 函数的try-catch语法的区别