我的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
?
答案 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);
}