We recommend using Visual Studio 2017

C6310

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at C6310.

warning C6310: illegal constant in exception filter can cause unexpected behavior

This message indicates that an illegal constant was detected in the filter expression of a structured exception handler. The constants defined for use in the filter expression of a structured exception handler are:

  • EXCEPTION_CONTINUE_EXECUTION

  • EXCEPTION_CONTINUE_SEARCH

  • EXCEPTION_EXECUTE_HANDLER

These values are defined in the runtime header file excpt.h.

Using a constant that is not in the preceding list can cause unexpected behavior.

The following code generates this warning:

#include <excpt.h>  
#include <stdio.h>  
#include <windows.h>  
  
BOOL LimitExceeded();  
  
void fd( )  
{  
  __try   
  {  
    if (LimitExceeded())   
    {  
      RaiseException(EXCEPTION_ACCESS_VIOLATION,0,0,0);  
    }  
    else  
    {  
      // code   
    }  
  }   
  __except (EXCEPTION_ACCESS_VIOLATION)  
  {  
    puts("Exception Occurred");  
  }  
}  

To correct this warning, use the following code:

#include <excpt.h>  
#include <stdio.h>  
#include <windows.h>  
  
BOOL LimitExceeded();  
  
void fd( )  
{  
  __try   
  {  
    if (LimitExceeded())   
    {  
      RaiseException(EXCEPTION_ACCESS_VIOLATION,0,0,0);  
    }  
    else  
    {  
      // code   
    }  
  }   
  __except (GetExceptionCode()==EXCEPTION_ACCESS_VIOLATION ?   
               EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)  
  {  
    puts("Exception Occurred");  
  }  
}  

Show: