共用方式為


清除資源

在終止處理常式執行期間,您可能不知道哪些資源實際配置之前呼叫終止處理常式。 可能的__try陳述式區塊前被中斷所有的資源配置,以便開啟不是所有的資源。

因此,為了安全起見,您應該檢查以查看哪些資源是實際開啟前終止處理清除。 建議的程序是:

  1. 初始化為 NULL 的控點。

  2. 在__try陳述式區塊、 配置資源。 控點是設定用於正數值,如配置資源。

  3. 在__finally陳述式區塊,釋放每項資源,其相對應的控制代碼或旗標變數不是零,或 not NULL。

範例

比方說,下列程式碼會使用終止處理常式來關閉三個檔案,並在配置的記憶體區塊__try陳述式區塊。 之前清除資源,程式碼會先檢查來查看是否配置資源。

// exceptions_Cleaning_up_Resources.cpp
#include <stdlib.h>
#include <malloc.h>
#include <stdio.h>
#include <windows.h>

void fileOps() {
   FILE  *fp1 = NULL,
         *fp2 = NULL,
         *fp3 = NULL;
   LPVOID lpvoid = NULL;
   errno_t err;

   __try {
      lpvoid = malloc( BUFSIZ );

      err = fopen_s(&fp1, "ADDRESS.DAT", "w+" );
      err = fopen_s(&fp2, "NAMES.DAT", "w+" );
      err = fopen_s(&fp3, "CARS.DAT", "w+" );
   }
   __finally {
      if ( fp1 )
         fclose( fp1 );
      if ( fp2 )
         fclose( fp2 );
      if ( fp3 )
         fclose( fp3 );
      if ( lpvoid )
         free( lpvoid );
   }
}

int main() {
   fileOps();
}

請參閱

參考

撰寫終止處理常式

結構化的例外處理 (C++)