从自定义 WinRT 组件报告错误的推荐方法是什么?
What is the recommended way to report errors from custom WinRT component?
我正在创作一个自定义 C++ WinRT 组件库以供第三方使用。我无法从我的库中确定 'best practices' 是什么 reporting/propagating 运行时错误条件。
我发现这篇文章详细介绍了处理异常和通过 HRESULT 跨 WinRT ABI 的最佳实践:https://docs.microsoft.com/en-us/windows/uwp/cpp-and-winrt-apis/error-handling。
但是我不清楚如何处理自定义(异常)错误。我想遵循现代 c++ 实践并抛出 std::runtime_errors,但 WinRT 文档说这是为将标准库错误映射到 'E_FAIL' HRESULT 而保留的。我是否应该遵循 COM 模型并实现自定义 HRESULT 值,只是为了抛出它们?
只需抛出一个 winrt::hresult_error
,带有 hresult 代码和错误消息。你也可以抛出一个继承自它的异常。 cppwinrt 生成的代码会将您的异常转换为 HRESULT。
我正在创作一个自定义 C++ WinRT 组件库以供第三方使用。我无法从我的库中确定 'best practices' 是什么 reporting/propagating 运行时错误条件。
我发现这篇文章详细介绍了处理异常和通过 HRESULT 跨 WinRT ABI 的最佳实践:https://docs.microsoft.com/en-us/windows/uwp/cpp-and-winrt-apis/error-handling。
但是我不清楚如何处理自定义(异常)错误。我想遵循现代 c++ 实践并抛出 std::runtime_errors,但 WinRT 文档说这是为将标准库错误映射到 'E_FAIL' HRESULT 而保留的。我是否应该遵循 COM 模型并实现自定义 HRESULT 值,只是为了抛出它们?
只需抛出一个 winrt::hresult_error
,带有 hresult 代码和错误消息。你也可以抛出一个继承自它的异常。 cppwinrt 生成的代码会将您的异常转换为 HRESULT。