VS C#调试器中看似奇怪的行为

维姆斯先生

我的form_load方法中有此代码...

System.IO.StreamReader file =  new System.IO.StreamReader(serverList);
Servers = new List<Server>();
String line;
//while ((line = file.ReadLine()) != null)
while (! file.EndOfStream)
{
    line = file.ReadLine().Trim();
    if (line[0] != '#' && line != "")
    {
        Servers.Add(new Server() { ServerName = line.Split('|')[0], 
            IPorHostname = line.Split('|')[1] });
    }
    else
    {
        MessageBox.Show("I don't understand what the debugger is doing!  Is this a bug?");
    }
}

我希望能够忽略正在读取的文件中的空行,因此我添加了该line != ""位并在if语句中对其进行检查之前对其进行了修整。加载应用程序时,服务器列表将为空。因此,我切换到调试模式并进入此代码。line为空时,在if语句上按F11键,调试/步进将停止,并显示应用程序。我期望发生的事情是回到while循环,但是那没有发生。

我添加了另一个,并带有一个消息框作为测试...消息框不显示!

简而言之,当line为空时,不会执行true和false的代码,调试器将停止单步执行该代码。

这里发生了什么事?我是否缺少明显的东西,或者这是Visual Studio中的错误?

拉瑟·卡尔森(Lasse V.Karlsen)

这是Load事件的问题它以这样的方式调用:使内部的异常被静默地吞下。

作为示例,您可能会在代码中出错,该行:

if (line[0] != '#' && line != "")

如果line变量包含一个空字符串,将抛出异常,因为这line[0]是不正确的,因此空字符串没有索引#0。

但是,由于您是在Load事件中执行此操作的,因此此类异常只会被吞下。

要解决此问题,请try/catchLoad事件处理程序中的所有代码周围添加一个

private void Form_Load(...)
{
    try
    {
        ... all your existing code here
    }
    catch (Exception ex) // add more specific exception handlers
    {
        ... handle the exception here
    }
}

以下是有关此问题的堆栈溢出中的其他一些问题和解答:

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VS C#调试器中看似奇怪的行为

来自分类Dev

设置VS调试器的字节序

来自分类Dev

VS调试器无法关闭

来自分类Dev

TSLint '属性不存在于类型' VS firefox 调试器行为

来自分类Dev

C ++ VS2010调试器在超出循环范围的循环变量上表现异常

来自分类Dev

VS2015 C ++调试器读取结构时出现怪异结果

来自分类Dev

如何在VS调试器中的C ++中查看动态字符串数组的内容

来自分类Dev

VS代码调试器-Felix Becker-调试器什么都没有

来自分类Dev

VS2013调试器找不到Qt源

来自分类Dev

VS 2013无法附加64位调试器

来自分类Dev

VS2013调试器找不到Qt源

来自分类Dev

启动调试器时VS2012屏幕消失

来自分类Dev

通过cmd配置VS远程调试器的方法

来自分类Dev

VS代码调试器变量未显示

来自分类Dev

如何为VS Code设置python调试器?

来自分类Dev

VS2013调试器找不到Qt源

来自分类Dev

VS2015 调试器不扩展变量

来自分类Dev

VS 调试器跳过基类中的构造函数

来自分类Dev

VS 调试器未显示某些变量

来自分类Dev

如何重置VisualStudio(VS2010,VS2012)调试器缓存?

来自分类Dev

const vs #define(奇怪的行为)

来自分类Dev

VS2013的奇怪行为

来自分类Dev

VS Code C ++调试

来自分类Dev

一键启动VS Code的Live服务器和Chrome调试器

来自分类Dev

浮动vs.c中的双重奇怪行为

来自分类Dev

在VS2010调试器中可视化OpenCV映像

来自分类Dev

在VS2013调试器中将字节数组转换为结构

来自分类Dev

在VS调试器中显示UTF-16字符串

来自分类Dev

VS2012 JavaScript调试器无法获取我的更改