已经在运行MSDN帮助文档以获取Visual Basic。在使用计时器尝试示例之后 - 将标签和计时器组件拖入设计器并将以下内容添加到组件子例程
Label1.Text = My.Computer.Clock.LocalTime.ToLongTimeString
调试期间立即窗口的输出如下
类型的第一次机会异常 发生'System.InvalidCastException' 在Microsoft.VisualBasic.dll中
中
第一个 机会异常的类型 发生'System.InvalidCastException' 在Microsoft.VisualBasic.dll
使用上下文菜单组件在先前的MSDN示例上发生相同的错误。我应该Try...Catch...Finally
出现此错误并尝试继续吗?或者,我是在处理更严重的事情吗?
答案 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 :)
}
}
多个第一次机会运行时期间的异常会削弱应用程序的性能,因为异常处理很昂贵。尤其是在网络应用中。您可以添加此处理程序并查看特定的第一次机会异常并尝试避免/纠正它们。