从我的实践来看,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();
}
}
有人可以解释一下吗?谢谢!
答案 0 :(得分:1)
StackOverflowException
不被.NET视为损坏状态异常,因此无法以这种方式捕获。有关如何执行此操作的其他答案,请参阅How do I prevent and/or handle a StackOverflowException?。