如何在Visual Studio中调试finally块?

埃文·考克斯(Evan Cox)

如果发生未捕获的异常,如何调试finallytry {...} finally{...}似乎无论我如何使用异常设置或调试器,Visual Studio都不会允许我越过try块中抛出的异常来调试finally代码。

这是一个有代表性的简短示例:

public static void Main()
{
    var instrument = new Instrument();
    try
    {
        instrument.TurnOnInstrument();
        instrument.DoSomethingThatMightThrowAnException();
        throw new Exception(); // Visual Studio won't let me get past here. Only option is to hit "Stop Debugging", which does not proceed through the finally block
    }
    finally
    {
        if(instrument != null)
            instrument.TurnOffInstrument();
    }
}

上下文:我有一个程序来控制一些用于在实验室中进行电子测量的硬件仪器,例如可编程PSU。万一出问题了,我希望它能快速失败:首先关闭仪器以防止可能的物理伤害,然后退出。关闭它们的代码在finally块中,但是我无法调试该代码在错误情况下的工作原理。我不想尝试处理任何可能的错误,只需打开仪器,然后关闭程序即可。也许我会以错误的方式进行操作?

西里尔·塞格诺

如果异常导致应用程序崩溃(在您的代码中就是这种情况),则永远不会执行finally块。要调试示例中的finally块,必须将主函数的整个代码放在另一个try语句中,并捕获异常以防止应用程序崩溃,如下所示:

public static void Main()
{
    try
    {
        var instrument = new Instrument();
        try
        {
            instrument.TurnOnInstrument();
            instrument.DoSomethingThatMightThrowAnException();
            throw new Exception();
        }
        finally
        {
            if (instrument != null)
                instrument.TurnOffInstrument();
        }
    }
    catch (Exception)
    {
         Console.Writeline("An exception occured");
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在visual studio中调试python

如何在Visual Studio Code中调试Lua

如何在Visual Studio Code中调试Karma测试?

如何在Visual Studio中调试独立的javascript?

如何在Visual Studio代码中调试打字稿文件

如何在Visual Studio 2013中调试QFixed

如何在Visual Studio中调试TypeScript单元测试?

如何在 Visual Studio 2017 中调试或跟踪 Angular 绑定?

如何在Visual Studio中调试单个线程?

如何在Visual Studio中调试Powershell模块

如何在Visual Studio 2013中以调试模式关闭ASSERT

如何在Visual Studio 2015 RC中调试JavaScript?

如何在Visual Studio 2017中更改调试端口?

如何在Visual Studio 2015中调试Mscorlib.dll

如何在Visual Studio中调试nuget包

如何在Visual Studio Code(VSCode)中调试Cucumber?

如何在 Visual Studio 2015 中调试 dtsx?

如何在 Visual Studio 中调试 QuantLib-Python 模块

如何在Visual Studio 2015中创建的VSIX中调试Visual Studio包

如何在Java中的finally块中处理抛出异常

如何在Visual Studio中调试python(如何进入库)?

如何在当前Visual Studio主机内部的Visual Studio扩展中调试用Roslyn编译的代码?

如何在 Visual Studio 2017 中有效调试?

如何在调试期间使Visual Studio进入#define?

如何在Visual Studio Code(VSCode)上运行或调试php

如何在Visual Studio Code上调试Ruby代码?

Visual Studio如何在调试模式下进行ifstream

如何在Visual Studio上过滤调试输出窗口?

如何在Visual Studio中选择调试配置文件?