HandleProcessCorruptedStateExceptions不适用于StackOverflow异常

时间:2015-02-03 19:32:14

标签: c# .net

从我的实践来看,HandleProcessCorruptedStateExceptions不适用于StackOverflow异常,但适用于AccessViolationException。

来自this post的AccessViolationException:

public class Test
{
    public static void Main(string[] args)
    {
        Wtf();
    }

    [SecurityCritical]
    [HandleProcessCorruptedStateExceptions]
    private static void Wtf()
    {
        try
        {
            IntPtr ptr = new IntPtr(1000);
            Marshal.StructureToPtr(1000, ptr, true);
        }
        catch (Exception e)
        {
            Environment.Exit(1);
        }
    }
}

我自己写的StackOverflow异常,什么都没有。

public class Test
{
    public static void Main(string[] args)
    {
        Wtf();
    }

    [SecurityCritical]
    [HandleProcessCorruptedStateExceptions]
    private static void Wtf()
    {
        try
        {
            F();
        }
        catch (Exception e)
        {
            Environment.Exit(1);
        }
    }

    private static void F()
    {
        F();
    }
}

有人可以解释一下吗?谢谢!

1 个答案:

答案 0 :(得分:1)

StackOverflowException不被.NET视为损坏状态异常,因此无法以这种方式捕获。有关如何执行此操作的其他答案,请参阅How do I prevent and/or handle a StackOverflowException?