Я создаю исключение в C++ следующим образом:
Код: Выделить всё
catch (CRef _exc)
{
throw winrt::hresult_error(
E_FAIL,
winrt::to_hstring(_exc.what()));
}
Код: Выделить всё
try
{
await obj.SomeMethodAsync();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Только мое исходное сообщение:
Код: Выделить всё
Failed to Function.Сообщение будет выглядеть следующим образом:
Код: Выделить всё
Unspecified errorКод: Выделить всё
Failed to initialize camera.- Я использую winrt::hresult_error
- Я подтвердил, что строка сообщения правильно передана в исключение
- Проблема возникает только после пересечения границы WinRT в C#
- Если я отлаживаю внутри C++, прежде чем выйти из метода, сообщение будет правильным.
- После перехода на C# появляется текст префикса.
Что заставляет .NET / WinRT добавлять системное сообщение в начало
"Не указано" error»
даже если я передаю специальное сообщение через winrt::hresult_error?
Каков правильный HRESULT или шаблон исключения, чтобы избежать такого поведения и передать на C# только исходное сообщение?