sms*_*sms 23 c++ language-lawyer c++11 c++14
void foo() try {} catch (...) {}
// OK, function-try-block
Run Code Online (Sandbox Code Playgroud)
[]() try {} catch (...) {} ();
// error: expected ‘{’ before ‘try’
Run Code Online (Sandbox Code Playgroud)
[]() { try {} catch (...) {} } ();
// OK, extra curly braces`
Run Code Online (Sandbox Code Playgroud)
为什么不允许第二种变体?
最初,引入了函数 - 尝试块,以便能够捕获构造函数或子对象的析构函数中抛出的异常.语法扩展到普通函数以保持一致性.
当然,可以为lambdas引入这样的语法.然而,与构造函数和析构函数相反,除了简单地将try-block包含在另一对中{ }之外,没有实际优势,除了后者看起来不那么模糊.
| 归档时间: |
|
| 查看次数: |
1096 次 |
| 最近记录: |