首页 > 解决方案 > .Net Framework:未捕获异常时未调用 finally 块

问题描述

一个简单的控制台应用程序,在 Visual Studio 2019、.Net Framework 4.7、Windows 中:

static void Main(string[] args)
{
    try
    {
         Console.WriteLine("In try");
         throw new IndexOutOfRangeException();
    }
    finally
    {        *// Surprisingly this part is not being executed.*
         Console.WriteLine("In finally");
         Console.ReadLine();
    }                       
}

我确信在 NO Exception 和 YES Exception 的情况下会调用 finally 块。我在文档中读过:

但是,如果异常未处理,finally 块的执行取决于异常展开操作的触发方式。反过来,这取决于您的计算机的设置方式。

Link 好吧,我很困惑。我是否需要对这个“展开操作”进行一些操作,以便在出现未处理的异常时最终会被调用?

标签: c#try-catchconsole-applicationunhandled-exceptionfinally

解决方案


推荐阅读