Share via


C6320

경고 C6320: 예외 필터 식이 상수 EXCEPTION_EXECUTE_HANDLER입니다. 이렇게 하면 처리하지 않을 예외를 마스킹할 수 있습니다.

이 경고는 __except 블록에 EXCEPTION_EXECUTE_HANDLER 상수를 사용할 경우의 파생 작업을 나타냅니다. 이 경우 __except 블록의 문이 항상 실행되어 예외를 처리하므로 특정 함수에서 처리를 원하지 않는 예외까지 처리하게 됩니다. 예외를 처리하기 전에 이를 검사하는 것이 좋습니다.

예제

다음 코드에서는 __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 ...
   } 
}

참고 항목

참조

try-except Statement