Каков рекомендуемый способ сообщить об ошибках из пользовательского компонента WinRT? - PullRequest
0 голосов
/ 23 декабря 2018

Я создаю пользовательскую библиотеку компонентов C ++ WinRT для использования третьими лицами.Я не могу определить, каковы «лучшие практики» для сообщения / распространения условий ошибок во время выполнения из моей библиотеки.

Я нашел эту статью, в которой подробно описываются лучшие методы для обработки исключений и пересечения ABR WinRT через HRESULT: https://docs.microsoft.com/en-us/windows/uwp/cpp-and-winrt-apis/error-handling.

Однако мне неясно, что делать для пользовательских (исключительных) ошибок.Я хотел бы следовать современным практикам c ++ и генерировать std :: runtime_errors, но в документации WinRT говорится, что он зарезервирован для отображения ошибок стандартной библиотеки в 'E_FAIL' HRESULT.Должен ли я следовать модели COM и реализовывать пользовательские значения HRESULT, просто чтобы их выбросить?

1 Ответ

0 голосов
/ 24 декабря 2018

Просто киньте winrt::hresult_error, с кодом ошибки и сообщением об ошибке.Вы также можете выбросить исключение, унаследованное от него.Код, сгенерированный cppwinrt, преобразует ваше исключение в HRESULT.

...