天天看点

dip:添加抛作为函数属性与命名参数

来表示

不抛

.因为

不抛

作为默认更好,用在

模块顶

时,如果有要

的函数,就需要这个

了.因为

异常

成本大,所以默认

不抛

才是最经济的,即不需要

异常

的开销.

属性仅对

函数/闭包

有用.

void bar() throw;

struct S1 {
    nothrow void foo() { bar(); } //错误,不允许抛
}

struct S2 {
    void foo() { bar(); } // 可抛
}
           
void abc() throw throw;   // 错误
void bar() throw nothrow; // 错误

nothrow:
    foo() throw; // 好

throw:
    def() nothrow; // 好