Freigeben über


C6320

Aktualisiert: November 2007

C6320

Warnung C6320: Der Ausnahmefilterausdruck ist die EXCEPTION_EXECUTE_HANDLER-Konstante. Hierdurch werden möglicherweise Ausnahmen maskiert, für die keine Behandlung vorgesehen war.

Diese Warnung gibt an, welchen Nebeneffekt die Verwendung der EXCEPTION_EXECUTE_HANDLER-Konstante im __except-Block hat. In diesem Fall wird die Anweisung im __except-Block immer ausgeführt, um die Ausnahme zu behandeln. Dies betrifft auch Ausnahmen, die nicht in einer bestimmten Funktion behandelt werden sollten. Es empfiehlt sich, die Ausnahme vor der Behandlung zu überprüfen.

Beispiel

Der folgende Code generiert diese Warnung, da der __except-Block versucht, Ausnahmen aller Typen zu behandeln:

#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 ...
   } 
} 

Verwenden Sie zum Korrigieren dieser Warnung GetExceptionCode, um eine bestimmte Ausnahme vor der Behandlung zu überprüfen, wie im folgenden Code dargestellt:

#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 ...
   } 
}

Siehe auch

Referenz

try-except Statement