C异常(C structured exception)只能处理一种类型(unsigned int),C++(www.cppentry.com)异常(C++(www.cppentry.com) exception)处理很多类型。C异常根据无符号整型的值来标识,而C++(www.cppentry.com)异常是根据数据类型来标识的。当在C程序中引发了异常后,每一个能处理者都去检查异常内容来决定是自己处理还是交给其他处理者,或者是忽略。在C++(www.cppentry.com)程序中异常被抛出后,它有可能是任何一种类型。
C异常处理模式是"异步",当异常发生后会向下继续执行的。C++(www.cppentry.com)异常处理模式是"同步",异常发生时就是异常抛出时!
在C++(www.cppentry.com)程序中引发C异常后,能被C的结构化异常者处理或者被C++(www.cppentry.com) catch中的处理者处理。
下面这例子:在C++(www.cppentry.com)程序引发了C的异常。
[cpp] view plaincopyprint
// exceptions_Exception_Handling_Differences.cpp
// compile with: /EHa
#include <iostream>
using namespace std;
void SEHFunc( void );
int main() {
try {
SEHFunc();
}
catch( … ) {
cout 《 "Caught a C exception."《 endl;
}
}
void SEHFunc() {
__try {
int x, y = 0;
x = 5 / y;
}
__finally {
cout 《 "In finally." 《 endl;
}
}
程序结果:
In finally.
Caught a C exception.