#define _NOEXCEPT
throw ()
shared_ptr<_Ty> lock() const _NOEXCEPT
它是函數(shù)提供者和使用者的一種君子協(xié)定,標(biāo)明該函數(shù)不拋出任何異常。
之所以說(shuō)是君子協(xié)定,是因?yàn)閷?shí)際上內(nèi)部實(shí)現(xiàn)是需要人肉確保。
如果一個(gè)標(biāo)明throw()的函數(shù)內(nèi)部發(fā)生了throw:
1,如果內(nèi)部直接throw something,編譯器會(huì)發(fā)現(xiàn)并指出;
2. 如果是內(nèi)部調(diào)用了一個(gè)可能throw something的函數(shù),編譯器無(wú)法發(fā)現(xiàn),運(yùn)行時(shí)一旦這個(gè)內(nèi)部的函數(shù)throw,程序會(huì)abort。
****
func() throw(type) ,會(huì)拋出某種異常
func() throw(),不會(huì)拋出
func() throw(...),可能是任何類型的異常