Exceptions structurées sous Win32 (C++)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Gestion des exceptions dans C++Builder

Win32 supporte la gestion des exceptions structurées du C (SEH), qui est similaire à la gestion des exceptions C++ standard. Toutefois, il existe certaines différences qui requièrent de procéder avec attention lorsque ces exceptions sont mélangées à du code C++ sensible aux exceptions.

Lorsque vous utilisez la gestion des exceptions structurées dans des applications C++Builder, vous devez garder les considérations suivantes à l'esprit :

  • Les exceptions structurées du langage C sont utilisables dans les programmes C++.
  • Les exceptions C++ ne peuvent pas être utilisées dans un programme C car elles requièrent que leur gestionnaire soit spécifié par le mot clé catch qui n'est pas autorisé dans un programme C.
  • Une exception générée par un appel à la fonction RaiseException est gérée par un bloc try / __except (C++) ou __try / __except (C). Vous pouvez aussi utiliser les blocs try / __finally ou __try / __finally. Voir Syntaxe des exceptions structurées (C++). Tous les gestionnaires des blocs try / catch sont ignorés lorsque RaiseException est appelée.
  • Les exceptions qui ne sont pas gérées par l'application n'entraînent pas d'appel à la fonction terminate, mais sont plutôt transmises au système d'exploitation (en principe, le résultat final est l'arrêt du processus).
  • Les gestionnaires d'exceptions ne reçoivent pas de copie de l'objet exception, à moins qu'ils ne le demandent.

Vous pouvez utiliser les fonctions suivantes d'aide à la gestion des exceptions du langage C dans les programmes C ou C++ :

C++Builder ne restreint pas l'usage de la fonction UnhandledExceptionFilter au filtre d'exception des blocs __try / __except ou try / __except. Toutefois, le comportement du programme est indéfini lorsque cette fonction est appelée en dehors d'un bloc __try / __except ou try / __except.

Rubriques

Voir aussi