Exception DirectX 11 API和异常安全 是否有任何地方可以找到DirectX 11 API中的不同方法的安全级别?< p> C++中的DirectX API都不会抛出C++异常。它们也不会生成SEH异常,除非存在某种运行时或用户模式驱动程序错误,或者调试运行时触发了断点

Exception DirectX 11 API和异常安全 是否有任何地方可以找到DirectX 11 API中的不同方法的安全级别?< p> C++中的DirectX API都不会抛出C++异常。它们也不会生成SEH异常,除非存在某种运行时或用户模式驱动程序错误,或者调试运行时触发了断点,exception,directx-11,exception-safety,Exception,Directx 11,Exception Safety,这就是为什么他们都返回HRESULT或VOLID 一般来说,Direct3D 11对象根据其AddRef/Release引用计数遵循标准COM生存期规则,但主要例外情况是,如果设备完全释放,则由此创建的所有设备子对象将立即失效 即使不使用C++异常处理,编写异常安全代码也是很好的做法,使用微软::WrL::COMPTR DirectX 11接口对象是一个好主意——警告您需要确保最终设备实例本身被释放/重置,当然,如果您看到它崩溃,确保。我更关心的是预测路径在代码中抛出的错误,而这些错误我没有考

这就是为什么他们都返回HRESULT或VOLID

一般来说,Direct3D 11对象根据其
AddRef/Release
引用计数遵循标准COM生存期规则,但主要例外情况是,如果设备完全释放,则由此创建的所有设备子对象将立即失效


即使不使用C++异常处理,编写异常安全代码也是很好的做法,使用<代码>微软::WrL::COMPTR DirectX 11接口对象是一个好主意——警告您需要确保最终设备实例本身被释放/重置,当然,如果您看到它崩溃,确保。我更关心的是预测路径在代码中抛出的错误,而这些错误我没有考虑过。我实际上还没走到那一步:)那么,不用担心。只要你自己不弄乱内存,DX是坚如磐石的,只会向你抛出错误,没有例外!(双关语):)只需检查HRESULT并采取相应的行动。我对代码中的路径有点强迫症。我想尽量减少对未知路径的暴露。我对对象可能无法初始化的情况非常怀疑,不管是由于不正确的初始化还是由于未知的过程未初始化。我想这就是正确的设计与彻底的测试相结合,以便对所有接口使用

ComPtr
。这样你就不用担心了。使用WRL one或您自己的roll(不是琐碎的)。只是不要使用裸露的接口指针。