3

'一直在运行 MSDN 帮助文档来掌握 Visual Basic 的窍门。在尝试使用计时器的示例后 --one 将标签和计时器组件拖到设计器中,并将以下内容添加到组件子例程中

Label1.Text = My.Computer.Clock.LocalTime.ToLongTimeString

调试期间即时窗口的输出如下

Microsoft.VisualBasic.dll 中 出现“System.InvalidCastException”
类型的第一次机会异常 Microsoft.VisualBasic.dll 中出现“System.InvalidCastException”类型的第一次机会异常

在使用上下文菜单组件的上一个 MSDN 示例中也会出现相同的错误。我应该Try...Catch...Finally这个错误并尝试继续前进吗?或者,我正在处理更严重的事情吗?

4

5 回答 5

2

在 Debug 菜单 -> Exceptions 中,您可以使调试器在第一次抛出异常时停止,即使稍后会被捕获;如果你想知道发生了什么,这是最简单的方法

于 2009-03-25T04:40:47.343 回答
2

当您看到有关第一次机会异常的信息时,这仅意味着在您调用的代码中捕获了异常,但并不一定意味着代码失败。如果代码运行时不会导致程序崩溃并返回有效值,那么就没有问题。当您实现自己的 try/catch 块时,您还将在调试窗口中看到有关第一次机会异常的输出。

于 2009-03-25T04:53:41.977 回答
0

在第一次机会异常中检查异常的详细信息。您应该看到一个堆栈帧/跟踪属性。在那里你应该看到错误发生在哪一行。这应该可以帮助你。

于 2009-03-25T04:42:00.680 回答
0

在 IDE 中尝试转到 Tools > Options > Projects and Solutions > VB Defaults 并将 Option Strict 设置为“On” - 这可能有助于在编译项目而不是运行项目时发现转换问题。

“第一次机会执行”并不一定意味着您的代码有问题。这可能意味着 IDE 或编译器或任何其他涉及的组件遇到并处理了错误,并且在此过程中通知调试器并将异常报告到即时窗口。这是关于该主题的出色帖子:

http://blogs.msdn.com/davidklinems/archive/2005/07/12/438061.aspx

于 2009-03-25T05:04:14.680 回答
0

调试和诊断 First Chance Exception 的快速简便的解决方案是:

AppDomain.CurrentDomain.FirstChanceException += CurrentDomainOnFirstChanceException;

进而

private void CurrentDomainOnFirstChanceException(object sender, FirstChanceExceptionEventArgs firstChanceExceptionEventArgs)
    {
        if (firstChanceExceptionEventArgs.Exception is NullReferenceException)
        {
            // do your handling and debugging :)
        }
    }

运行时的多次首次机会异常会削弱应用程序的性能,因为异常处理成本很高。特别是在网络应用程序中。您可以添加此处理程序并查看特定的第一次机会异常并尝试避免/纠正它们。

于 2015-05-27T08:51:19.290 回答