我正在编写一个供第三方使用的自定义C ++ WinRT组件库。我无法确定从库中报告/传播运行时错误情况的“最佳实践”。
我发现本文详细介绍了处理异常和通过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值?
答案 0 :(得分:1)
只需抛出winrt::hresult_error
,并附带结果代码和错误消息。您还可以引发从其继承的异常。 cppwinrt生成的代码会将您的异常转换为HRESULT。