En écrivant du code Win32 C++, j'apprécierais quelques conseils sur la façon de gérer les erreurs des API Win32.Suggestions sur la gestion des erreurs de code Win32 C++: exceptions AtlThrow vs STL
En particulier, en cas d'échec d'un appel de fonction Win32 (par exemple MapViewOfFile), est-il préférable de:
utilisation AtlThrowLastWin32
définir une classe Win32Exception dérivé de std :: exception, avec un membre de données HRESULT ajouté pour stocker le HRESULT correspondant à la valeur renvoyée par GetLastError?
Dans ce dernier cas, je pourrais utiliser la méthode que() pour renvoyer une chaîne d'erreur détaillée (par exemple "appel MapViewOfFile échoué dans la méthode MyClass :: DoSomething().").
Quels sont les avantages et les inconvénients de 1 vs. 2?
Y at-il une autre meilleure option qui me manque?
En note secondaire, si je veux localiser le composant que je développe, comment pourrais-je localiser l'exception what() string? Je pensais construire une table mappant la chaîne anglaise originale retournée par what() dans une chaîne d'erreur localisée Unicode. Quelqu'un pourrait-il suggérer une meilleure approche?
Merci beaucoup pour vos idées et suggestions.