【问题标题】:visual studio 2015 not stopping on exception line of codeVisual Studio 2015 不会在异常代码行上停止
【发布时间】:2016-04-21 17:29:17
【问题描述】:

我刚刚在我的桌面上安装了 Visual Studio,并正在创建一个测试解决方案来了解我的方法。我创建了一个包含 2 个项目的解决方案,其中一个是 CSV 阅读器的 IDataReader 实现,另一个是用于在 datagridview 中显示阅读器的 Windows 窗体应用程序。

阅读器按预期生成异常,但它不会在引发异常的代码行上停止。阅读器被正确实例化。但是当我将它加载到数据表中时,它会在 Table.Load(Reader) 上引发异常

异常发生在阅读器内部的某个地方,但它并没有在异常实际发生的地方停止。

我的 dataReader 看起来像这样:

    public class DelimitedReader : IDataReader{....lots of code here...}

我的表单像这样访问 Delimitedreader:

    private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
    {
        try
        {
            DelimitedReader Reader = new DelimitedReader(openFileDialog1.FileName);
            DataTable Table = new DataTable("Data");

            Table.Load(Reader);<<<<<<<<Exception stops on this line of code
            Grid.DataSource = Table;
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

我有:

  • 在“异常设置窗口”中开启了 CLR 异常
  • 确保两个项目的“调试信息”都设置为完整
  • 为两者都启用了 XML 文档,我认为这是不必要的

我错过了什么?

【问题讨论】:

    标签: exception-handling visual-studio-2015


    【解决方案1】:

    我的猜测是您的读者会抛出新异常。这会导致 VS 在更高级别的异常处理程序处停止。

    【讨论】:

    • 这是正确的。由于从 IDataReader 加载数据表时需要的格式不正确的 SchemaTable,异常来自 DataReader 内部某处。我纠正的另一个错误是 GetValues 方法没有正确返回表示数组中值的对象数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多