代码之家  ›  专栏  ›  技术社区  ›  Dustin Getz sunsations

检查失败的新

  •  0
  • Dustin Getz sunsations  · 技术社区  · 14 年前

    DDClientData* pNewData = new DDClientData();
    if (pNewData==NULL)
        return E_OUTOFMEMORY;
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   sharptooth    14 年前

    COM方法不允许释放异常—实现可以抛出异常,但必须在它们转义方法并转换为适当的HRESULT之前处理它们。

    以上代码将不会产生预期效果-一次 new std::bad_alloc 则不会执行对空指针的检查。实现必须包装 召唤 try catch 或者将整个方法实现包装到 尝试 - 抓住 . ATL通常使用 _ATLTRY 新的 打电话。

        2
  •  1
  •   JSBÕ±Õ¸Õ£Õ¹    14 年前

    COM不使用异常:任何COM对象都应该返回有效的 HRESULT

    [1] 我是一个微软全职员工。MS中的COM组件是用C++异常编译的。