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类型异常 |
一个函数抛出异常的行为还取决于下面因素:
下面是详细说明:
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所写。
VisualC++ Exception Specifications
原文地址:http://blog.csdn.net/chen_jint/article/details/41577307