#define _NOEXCEPT
throw ()
shared_ptr<_Ty> lock() const _NOEXCEPT
它是函數提供者和使用者的一種君子協定,標明該函數不拋出任何異常。
之所以說是君子協定,是因為實際上內部實現是需要人肉確保。
如果一個標明throw()的函數內部發生了throw:
1,如果內部直接throw something,編譯器會發現并指出;
2. 如果是內部調用了一個可能throw something的函數,編譯器無法發現,運行時一旦這個內部的函數throw,程序會abort。
****
func() throw(type) ,會拋出某種異常
func() throw(),不會拋出
func() throw(...),可能是任何類型的異常