我刚刚读到在 C++11 标准修订版中,不推荐使用异常规范。我以前认为指定你的函数可能会抛出什么是好的做法,但显然不是这样。
在阅读了 Herb Stutter 被广泛引用的文章之后,我不禁想知道:到底为什么异常规范是以它们的方式实现的,为什么委员会决定弃用它们而不是在编译时检查它们?为什么编译器甚至允许抛出未出现在函数定义中的异常?对我来说,这听起来像是在说“你可能不应该指定你的函数返回类型,因为当你指定int f()
,但return 3.5;
在它里面,你的程序可能会崩溃。” (即,与强类型的概念区别在哪里?)
(由于 s 中缺乏异常规范支持typedef
,鉴于模板语法可能是图灵完备的,实现这听起来很容易。)