Microsoft 特定的
可在函式的宣告中使用的 __declspec 擴充屬性。
語法
傳回類型
__declspec(nothrow)[呼叫約定] 函數名稱 ([參數清單])
備註
我們建議所有新的程式碼都使用 noexcept 運算子,而不使用 __declspec(nothrow)。
這個屬性會告知編譯器其所呼叫的已宣告函式絕對不會擲回例外狀況。 不過,它不會強制執行指示詞。 換句話說,它絕不會導致叫用 std::terminate (和 noexcept 不一樣) 或在 /std:c++17 模式 (Visual Studio 2017 15.5 版和更新版本) throw() 中。
使用同步例外狀況處理模型時 (現在為預設值),編譯器可以排除在這類函式中追蹤某些無法還原物件存留期的機制,並大幅降低程式碼大小。 指定下列前置處理器指示詞,下列三種函式宣告在 /std:c++14 模式中是相等的:
#define WINAPI __declspec(nothrow) __stdcall
void WINAPI f1();
void __declspec(nothrow) __stdcall f2();
void __stdcall f3() throw();
在 /std:c++17 模式中,throw() 與使用 __declspec(nothrow) 的其他項目不相等,因為如果從函式擲出例外狀況,即會導致叫用 std::terminate。
void __stdcall f3() throw(); 宣告會使用 C++ 標準所定義的語法。 在 C++17 中,throw() 關鍵字已停用。
END Microsoft 特定的