第一次机会例外

时间:2009-03-25 04:26:48

标签: vb.net visual-studio exception exception-handling first-chance-exception

已经在运行MSDN帮助文档以获取Visual Basic。在使用计时器尝试示例之后 - 将标签和计时器组件拖入设计器并将以下内容添加到组件子例程

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

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

  

类型的第一次机会异常   发生'System.InvalidCastException'   在Microsoft.VisualBasic.dll中   
  第一个   机会异常的类型   发生'System.InvalidCastException'   在Microsoft.VisualBasic.dll

使用上下文菜单组件在先前的MSDN示例上发生相同的错误。我应该Try...Catch...Finally出现此错误并尝试继续吗?或者,我是在处理更严重的事情吗?

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

在IDE中尝试转到工具>选项>项目和解决方案> VB默认并将Option Strict设置为'On' - 这可能有助于在编译项目时捕获转换问题,而不是在运行它时。

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

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

答案 4 :(得分:0)

第一次机会异常的调试和诊断的快速简便的解决方案是:

AppDomain.CurrentDomain.FirstChanceException += CurrentDomainOnFirstChanceException;

然后

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

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