共用方式為


C6320

警告 C6320: 例外狀況篩選條件運算式是常數 EXCEPTION_EXECUTE_HANDLER。 這可能會對不要進行處理的例外狀況做遮罩處理

這則警告表示在 __except 區塊中使用 EXCEPTION_EXECUTE_HANDLER 常數的副作用 (Side Effect)。 在此情況下,__except 區塊中的陳述式 (Statement) 一律會執行以處理該例外狀況,包括不想要在特定函式中處理的例外狀況。 建議您在處理該例外狀況之前先檢查它。

範例

下列程式碼會產生這則警告,原因是 __except 區塊會嘗試處理所有型別的例外狀況:

#include <stdio.h> 
#include <excpt.h> 

void f(int *p) 
{ 
   __try
   { 
      puts("in try"); 
      *p = 13;  // might cause access violation exception
      // code ...
   } 
   __except(EXCEPTION_EXECUTE_HANDLER) // warning
   { 
      puts("in except"); 
      // code ...
   } 
} 

若要更正這則警告,請先使用 GetExceptionCode 檢查特定例外狀況,然後再加以處理,如下列程式碼所示:

#include <stdio.h> 
#include <windows.h> 
#include <excpt.h> 

void f(int *p) 
{ 
   __try
   { 
      puts("in try"); 
      *p = 13;    // might cause access violation exception 
      // code ...
   } 
   __except(GetExceptionCode()==EXCEPTION_ACCESS_VIOLATION ? 
               EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
   { 
      puts("in except"); 
      // code ...
   } 
}

請參閱

參考

請試著-除非陳述式