我如何总是获取COMException而不是OutOfMemoryException?

时间:2012-12-03 11:43:22

标签: c# .net com exception-handling com-interop

我的C#代码使用COM对象。有时,COM对象方法将返回E_OUTOFMEMORY,但它将被转换为System.OutOfMemoryException而不是System.Runtime.InteropServices.COMException,并且具有适当的ErrorCode。这对我来说是一个问题,因为它使我的错误处理变得复杂 - 我更喜欢将COM对象方法引起的所有错误指示仅作为System.Runtime.InteropServices.COMException抛出。

当COM对象方法返回System.Runtime.InteropServices.COMException时,是否可以始终拥有System.OutOfMemoryException而不是E_OUTOFMEMORY

1 个答案:

答案 0 :(得分:0)

这可能是一个警察,但为什么不包装任何代码将System.OutOfMemoryException扔进Try / catch并重新抛出System.Runtime.InteropServices.COMException

有些事情:

    try
        {
            // COM Code here
        }
        catch (System.OutOfMemoryException ex)
        {
            throw new System.Runtime.InteropServices.COMException("E_OUTOFMEMORY", ex);
        }