繁体   English   中英

捕获调用Application.DoEvents()时引发的异常

[英]Catching exceptions thrown when invoking Application.DoEvents()

我是.Net的新手,我想知道为什么此代码仍然引发未处理的异常。

try
{
    Application.DoEvents();
}
catch
{
}

有人有什么主意吗? 此代码在事件处理程序中调用。 它抛出NullReferenceException。 有趣的是,当我尝试在此代码之前放置一个断点时,不会引发异常。 仅当我让代码连续运行时,才会发生异常。

并非所有异常都是可捕获的。 您没有告诉我们您正在看到什么异常,但是请注意,永远不会捕获StackOverflowExceptionExecutionEngineException 我知道前者可能与Application.DoEvents (通常在System.Drawing )发生,但我不确定后者。

无论如何,您的代码是邪恶的。 不要吞下例外。 这意味着您正在吞噬错误。

通常,请尝试避免Application.DoEvents 确实可能发生令人讨厌的重入问题。

注意使用Application.DoEvents() ,大多数时间用于错误的事情,例如在时间花费过程中更新进度条,这可以通过异步编程来完成。 您无法捕获所有异常,请告诉我们正在引发什么异常。

也可能是当您在没有断点的情况下运行应用程序时,DoEvents允许执行另一段代码,而段代码引发异常。

您应该检查异常的StackTrace以查看其指向您的位置(或在此处发布堆栈跟踪,我们可以查看它)。 如果是这种情况,则在使用断点并逐步执行时,您可能看不到异常,因为DoEvent和线程执行的方式不同。

如果在DoEvents期间从其他地方抛出了异常,那么这也可以解释为什么您会得到未处理的异常,即使上面的代码试图对任何异常进行黑洞处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM