You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2022调试时Catch块无法捕获NullReferenceException问题咨询

问题原因及解决办法

核心原因

VS2022调试器默认会在公共语言运行时异常(比如NullReferenceException)抛出时直接中断程序,这个优先级高于代码里的Catch块,所以调试时你看不到Catch执行;而直接运行生成的exe时没有调试器介入,异常会被代码正常捕获。

调试器设置调整步骤

  • 打开VS2022的「调试」菜单 → 「Windows」→ 「异常设置」(快捷键Ctrl+Alt+E)
  • 在弹出的窗口中,找到「公共语言运行时异常」,展开后取消勾选System.NullReferenceException的「抛出」选项
  • 也可以关闭「启用仅我的代码」:路径为「工具」→「选项」→「调试」→「常规」,取消勾选该选项(不过前者更精准,只针对特定异常)

代码优化(从根源避免异常)

最好提前判断列是否存在,避免触发NullReferenceException,代码修改如下:

'sort columns
With Me.dgv02
    Try
        Dim yearColumn = .Columns("Year")
        If yearColumn IsNot Nothing Then
            yearColumn.DisplayIndex = 0
        End If
        Index = 1  ' 11.09.2013
    Catch ex As Exception
        column = "Sum [kg]"
    End Try
End With

额外说明

BackgroundWorker.RunWorkerCompleted事件运行在UI线程,操作DataGridView是安全的,问题本质就是调试器的异常拦截机制导致Catch块在调试时无法触发,调整设置后即可正常执行。

内容的提问来源于stack exchange,提问作者grafj73

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 07:18:18