in include/wil/result_macros.h [2947:3024]
inline HRESULT __stdcall ResultFromKnownExceptions_WinRt(const DiagnosticsInfo& diagnostics, void* returnAddress, SupportedExceptions supported, IFunctor& functor)
{
WI_ASSERT(supported != SupportedExceptions::Default);
switch (supported)
{
case SupportedExceptions::Known:
try
{
return functor.Run();
}
catch (const ResultException& exception)
{
return ResultFromKnownException(exception, diagnostics, returnAddress);
}
catch (Platform::Exception^ exception)
{
return ResultFromKnownException(exception, diagnostics, returnAddress);
}
catch (const std::bad_alloc& exception)
{
return ResultFromKnownException(exception, diagnostics, returnAddress);
}
catch (std::exception& exception)
{
return ResultFromKnownException(exception, diagnostics, returnAddress);
}
catch (...)
{
auto hr = ResultFromKnownException_CppWinRT(diagnostics, returnAddress);
if (FAILED(hr))
{
return hr;
}
// Unknown exception
throw;
}
break;
case SupportedExceptions::ThrownOrAlloc:
try
{
return functor.Run();
}
catch (const ResultException& exception)
{
return ResultFromKnownException(exception, diagnostics, returnAddress);
}
catch (Platform::Exception^ exception)
{
return ResultFromKnownException(exception, diagnostics, returnAddress);
}
catch (const std::bad_alloc& exception)
{
return ResultFromKnownException(exception, diagnostics, returnAddress);
}
break;
case SupportedExceptions::Thrown:
try
{
return functor.Run();
}
catch (const ResultException& exception)
{
return ResultFromKnownException(exception, diagnostics, returnAddress);
}
catch (Platform::Exception^ exception)
{
return ResultFromKnownException(exception, diagnostics, returnAddress);
}
break;
}
WI_ASSERT(false);
return S_OK;
}