При написании кода Win32 C++, я был бы признателен за рекомендации по обработке ошибок API Win32.Предложения по обработке ошибок в коде Win32 C++: исключения в среде AtlThrow и STL
В частности, в случае сбоя вызова функции Win32 (например, MapViewOfFile), является его лучше:
использования AtlThrowLastWin32
определит Win32Exception класса, производный от станда :: exception, с добавленным членом данных HRESULT для хранения HRESULT, соответствующего значению, возвращаемому GetLastError?
В этом последнем случае, я мог бы использовать метод, что(), чтобы вернуть подробную строку ошибки (например, "не MapViewOfFile вызова в MyClass :: метод DoSomething().").
Каковы плюсы и минусы 1 против 2?
Есть ли другой лучший вариант, который мне не хватает?
В качестве побочного примечания, если я хочу локализовать компонент, который я разрабатываю, как я могу локализовать исключение what() string? Я думал о создании таблицы, отображающей исходную английскую строку, возвращаемую функцией() в строку локализованной ошибки Unicode. Может ли кто-нибудь предложить лучший подход?
Большое спасибо за ваши идеи и предложения.