vb.net - 在“尝试-捕获如何找到错误线”中

标签 vb.net visual-studio-2008 error-handling try-catch onerror

我们正在使用Visual Studio。在try&catch的情况下,我们无法精确定位抛出错误的代码行。好像我们使用履历表一样,将显示确切的行,我们可以在那里进行更正并测试。在某些情况下,有时在测试环境中可能无法重现错误。当引发错误时,我们必须至少在错误本身中定位错误。此外,如果程序是一个大程序,例如有多于400行,那么定位错误而没有错误行将是一个很大的麻烦。当try catch被认为优于错误声明时,为什么此功能不可用?当我们使用vb6时,我们可以键入resume并检查错误行。在vb.net中,我们正在搜索该功能。

最佳答案

在VB6中,Err对象相当原始,它为您提供有关错误的基本信息-数字和消息。 “错误”状态很容易消除(On Error Resume Next),正确的错误处理将掩盖任何方法的意图。

.NET异常更为复杂。它们是特殊的对象,实际上可以包含查找错误所需的每一位可用信息,包括导致错误的特定代码行。

这是因为异常冒出气泡直到被捕获(捕获)为止,否则,它们将无法处理并导致程序停止。异常不仅包含带有描述的错误类型和引发该错误的代码行,而且还包含导致该错误的每个调用-在VB6中这样做将需要大量的细致“堆栈跟踪”构建,可能很容易就开始撒谎,并且不会给您确切的行号。 .NET堆栈跟踪永远不会说谎。

要查看堆栈跟踪,可以在任何catch块中放置一个断点,并查看异常的属性。

您无法像在VB6中那样恢复,因为引发异常的行和捕获异常的行之间可能有数十种方法调用。但是,就像在VB6中一样,您可以将黄色的“当前指令”标记移到另一行并继续执行,然后逐行(F10)重新运行try块以查看问题所在。

关于vb.net - 在“尝试-捕获如何找到错误线”中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17790792/

相关文章:

c# - ASP.NET 编译器找不到任何命名空间

apache-spark - 基于流的应用程序中的受控/手动错误/恢复处理

android - Android-日志中出现IOException错误

php - Whitespace是此PHP/HTML中的问题吗?

mysql - 如何在sql语句中选择where子句未涵盖的行?

visual-studio-2010 - 如何使用上下文菜单在桌面上创建新的 Visual Studio 解决方案?

mysql - 如何检查用户在文本框中输入的用户名和密码是否与数据库中的记录匹配

c# - 无法捕获 WinForms 文本框中的 Enter 键

javascript - 动态更改 CSS 文件

vb.net - Visual Basic 文件系统.GetFiles