Visual C++ 中的结构异常处理
2008-11-13 19:29:21 来源:WEB开发网 __try {
// Guarded body
.
.
.
}
__finally {
// Termination handler
.
.
.
}
这里的__try和__finally勾画出了中断处理句柄的两个部分。在上面的例子中,操作系统和编译器一起保证了不论包含在__try内的程序段出现何种情况,包含在__finally内的程序段永远会被运行。不论你在__try内的程序段中调用return、goto或longjump,__finally内的中断处理句柄永远会被调用。其流程为
// 1、执行try程序段前的代码
__try {
// 2、执行try程序段内的代码
}
__finally {
// 3、执行finally程序段内的代码
}
// 4、执行finally程序段后的代码
2.2、几个例子
下面我们通过几个具体例子来讨论中断处理句柄是如何工作的。
2.2.1、例1--Funcenstein1
清单一给出了我们的第一个例子。
DWORD Funcenstein1(void) {
DWORD dwTemp;
// 1. Do any processing here.
.
.
.
__try {
// 2. request permission to access protected data, and then use it.
WaitForSingleObject(g_hSem, INFINITE);
g_dwProtectedData = 5;
dwTemp = g_dwProtectedData;
}
__finally {
// 3. Allow others to use protected data.
ReleaseSemaphore(g_hSem, 1, NULL);
}
// 4. Continue processing.
return (dwTemp);
}
例1 Funcenstein1函数代码
- ››Visual Basic 2008 数学函数
- ››Visual Studio2005中Smart Device的问题
- ››Visual Studio 中根据数据库字段动态生成控件
- ››Visual Studio 11全新黑色主题
- ››Visual Studio 2011 Beta新特性(一):安装VS201...
- ››结构体边界对齐
- ››Visual Studio自定义调试窗体两个小技巧
- ››Visual Studio 2005 Team Edition for Database P...
- ››Visual C#两分钟搭建BHO IE钩子
- ››Visual C++优化对大型数据集合的并发访问
- ››VISUAL C++中的OCX控件的使用方法
- ››Visual C++实现视频图像处理技术
更多精彩
赞助商链接