.NET Core - 如何捕获StackOverflowException

jos*_*ley 7 exception-handling exception .net-core

完美的StackOverflow问题终于来了....

我如何捕获StackOverflow异常!

它似乎在.NET Core StackOverflowException中不可用:

在此输入图像描述

如果我运行此代码:

using System;

namespace PlayGround.Core.Console
{
    public class Program
    {
        public static void Main(string[] args)
        {
            try
            {
                DoSomething();
            }
            catch(Exception e)
            {
                System.Console.WriteLine("Bugger");
            }

        }

        private static void DoSomething()
        {
            DoSomething();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

在此输入图像描述

你可以看到我的异常处理程序没有运行.那么如何在.NET Core中捕获此异常呢?

编辑2017年9月15日:在.NET Core 2.0中,现在有一个StackOverflowException类,但它实际上仍然没有捕获堆栈溢出异常.

小智 2

从 CLR 2.0 开始,您无法捕获 StackOverflowException。除非你是那个扔它的人。

https://blogs.msdn.microsoft.com/jaredpar/2008/10/22/when-can-you-catch-a-stackoverflowexception/

  • 众神一定是疯了 (3认同)