Partager via


C6320

Avertissement C6320 : l'expression de filtre d'exception correspond à la constante EXCEPTION_EXECUTE_HANDLER. Cela risque de masquer les exceptions qui n'étaient pas destinées à être gérées

Cet avertissement indique l'effet secondaire lié à l'utilisation de la constante EXCEPTION_EXECUTE_HANDLER dans le bloc __except. Dans ce cas, l'instruction dans le bloc __except s'exécute toujours pour gérer l'exception, y compris les exceptions vous ne souhaitiez pas gérer dans une fonction particulière. Il est recommandé de vérifier l'exception avant de la gérer.

Exemple

Le code suivant génère cet avertissement car le bloc __except tente de gérer les exceptions de tous les 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 ...
   } 
} 

Pour corriger cet avertissement, utilisez GetExceptionCode pour vérifier une exception particulière avant de la gérer, comme indiqué dans le code suivant :

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

Voir aussi

Référence

try-except Statement