如果在下面的代码的try块中存在OutOfMemoryException,是否有可能让is
检查自己抛出另一个OutOfMemoryException?换句话说,is
检查分配内存?OutOfMemoryException异常处理程序内是否可以使用is运算符会导致另一个OutOfMemoryException?
public void Main()
{
try
{
Execute();
}
catch (Exception e)
{
if (e is OutOfMemoryException || e is ThreadAbortException)
{
throw;
}
else
{
Log(e);
throw;
}
}
}
还挺琐碎只是试试这个,是不是?使用[这样的代码](http://referencesource.microsoft.com/#mscorlib/system/runtime/versioning/multitargetinghelpers.cs#65)。 –
如果我尝试它,它不会抛出异常,但我不确定这是否意味着它与下面的John Saunders解决方案相同。 –
我从.NET框架(如链接的框架)中的用法中提取了问题中的代码。在我看来,如果需要为'is'分配内存,可能会出现另一个OOM异常,但这是使用.NET库代码的,据推测这很可靠。我对CLR内存分配知之甚少,所以我想知道这与John Saunders的代码中的代码是否相同。因此,这个问题。 –