我最近又回到了C++。我已经至少一年没有使用C#来使用C++/CLI了,我有点生疏了。我正在查看Windows 8的Direct3D应用的基本示例,找不到任何可以解释

 DX::ThrowIfFailed

做。从它说的内容来看,如果DirectX中的某些操作失败,它将执行某些操作,但是从实现的角度来看,它似乎正被用于初始化事物,如Direct3D的基础所示:
    Platform::String^ text = "Hello, DirectX!";

DX::ThrowIfFailed(
    m_dwriteFactory->CreateTextLayout(
        message->Data(),
        message->Length(),
        m_textFormat.Get(),
        700, // maxWidth.
        1000, // maxHeight.
        &m_textLayout
        )
    );

有人可以向我解释此功能的工作原理。我看到它分散在各个示例中,但是没有大量的谷歌搜索工作可以缓解适当的文档记录。提前谢谢你!

最佳答案

此函数将故障HRESULT转换为异常。它是在DirectXHelper.h中定义的,它是Direct3D App模板的一部分:

inline void ThrowIfFailed(HRESULT hr)
{
    if (FAILED(hr))
    {
        // Set a breakpoint on this line to catch Win32 API errors.
        throw Platform::Exception::CreateException(hr);
    }
}
如果您使用的是Visual Studio,则可以在代码中的ThrowIfFailed的任何实例上单击鼠标右键,然后选择“转到定义”。这将打开包含定义的文件并导航至其位置。

关于c++ - 什么是DX::ThrowIfFailed?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13592255/

10-10 19:35