我们正在使用视觉工作室。在 try & catch 的情况下,我们无法准确定位引发错误的代码行。就好像我们使用简历一样,会显示确切的行,我们可以在那里进行更正并进行测试。在许多情况下,有时在测试环境中重现错误可能是不可能的。当抛出错误时,我们必须至少在其中找到错误本身。此外,如果程序很大,比如有 400 多行,那么在没有错误行的情况下定位错误是一件很头疼的事情。当 try catch 被认为优于 on error 语句时,为什么这个特性不可用?当我们使用 vb6 时,我们可以输入 resume 并检查错误行。在 vb.net 中,我们正在搜索该功能。
2 回答
尝试这个:
- 转到调试菜单。
- 单击例外... 选项。
- 应出现以下对话框:
注意公共语言运行时异常复选框被选中。
单击“确定”后,现在当您在代码或 .NET Framework 引发异常时调试代码时,调试器将在引发异常的行停止。这使得查找某些东西“破坏”的地方变得更加容易。
在 VB6 中,该Err
对象是相当原始的,它为您提供有关错误的基本信息 - 一个数字和一条消息。“错误”状态很容易消除 ( On Error Resume Next
),正确的错误处理会掩盖任何方法的意图。
.NET 异常更加复杂。它们是特殊对象,实际上可以包含定位错误所需的每一位可用信息——包括导致错误的特定代码行。
这是因为异常会冒泡,直到它们被捕获(在catch块中),如果没有,它们将未被处理并导致程序停止。异常不仅包含带有描述的错误类型和引发它的代码行,还包含导致它的每一个调用——在 VB6 中这样做需要大量细致的“堆栈跟踪”构建很容易开始撒谎,并且不会给你确切的行号。.NET 堆栈跟踪永远不会说谎。
要查看堆栈跟踪,您可以在任何catch块中放置一个断点并查看异常的属性。
您不能像在 VB6 中那样恢复,因为在引发异常的行和捕获异常的行之间可能有几十个方法调用。但是,就像在 VB6 中一样,您可以将黄色的“当前指令”标记移动到另一行并恢复执行,然后逐行 (F10)重新运行try块以查看发生了什么问题。