C6320

Note

This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here

warning C6320: exception-filter expression is the constant EXCEPTION_EXECUTE_HANDLER. This may mask exceptions that were not intended to be handled

This warning indicates the side effect of using EXCEPTION_EXECUTE_HANDLER constant in __except block. In this case, the statement in the __except block will always execute to handle the exception, including exceptions you did not want to handle in a particular function. It is recommended that you check the exception before handling it.

Example

The following code generates this warning because the __except block will try to handle exceptions of all types:

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

To correct this warning, use GetExceptionCode to check for a particular exception before handling it as shown in the following code:

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

See Also

try-except Statement