Exception Specifications這個詞我成為“異常規格”,不知道是否准確,有更准確的希望大家布林刺激哦。
異常規格被用於指出一個函數能拋出什麼樣的異常。
函數可以拋出任何類型異常
void MyFunction(int i) throw(...);
函數不能拋出異常
void MyFunction(int i) throw();其等效於
void __declspec(nothrow) MyFunction(int i) throw();
VisualC++與標准C++在異常規格實現,下面是VisualC++的異常規格說明
異常規格 涵義
throw()
函數不會拋出異常throw(...)
函數可以拋出任何異常throw(type)
函數拋出type類型異常
一個函數拋出異常的行為還取決於下面因素:
編譯函數的方式是C還是C++/EH編譯選項有關系(/EH:異常處理模式)指定的異常規格有關系下面是詳細說明:
Function
/EHsc
/EHs
/EHa
/EHac
C function
throw()
throw(...)
throw(...)
throw(...)
C++ function with no exception specification
throw(...)
throw(...)
throw(...)
throw(...)
C++ function with throw() exception specification
throw()
throw()
throw(...)
throw(...)
C++ function with throw(...) exception specification
throw(...)
throw(...)
throw(...)
throw(...)
C++ function with throw(type) exception specification
throw(...)
throw(...)
throw(...)
throw(...)
P.S:以上內容參考MSDN2008所寫。