WEB开发网
开发学院软件开发VC Visual C++ 中的结构异常处理 阅读

Visual C++ 中的结构异常处理

 2008-11-13 19:29:21 来源:WEB开发网   
核心提示: __try {// Guarded body...}__finally {// Termination handler...}这里的__try和__finally勾画出了中断处理句柄的两个部分,在上面的例子中,Visual C++ 中的结构异常处理(2),操作系统和编译器一起保证了不论包含

  __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函数代码

上一页  1 2 3 4 5 6  下一页

Tags:Visual 结构 异常

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接