异常需要4分钟才能被抛出

本文关键字:4分钟 异常 | 更新日期: 2023-09-27 17:49:54

我有一个奇怪的问题:我有一些代码被try..抓住

在catch片段中,我截取了发生的事情的屏幕截图。

问题是,异常需要几分钟后抛出的错误条件,所以我得到一个其他东西的屏幕截图完全。

是什么导致异常需要几分钟才能抛出?

感谢

代码补充道:

WaitAndActivateWindow调用AutoIT将焦点放在有问题的window方法上,该方法在整个代码中被调用,并且需要0.2秒的加载时间。

try
{
    // Load AutoIt defaults.
    LoadDefaults();
    // HandleInstallation();
    // Some more actions here
}
catch (Exception e)
{
    this.WaitAndActivateWindow();
    ScreenShotUtility.TakeScreenShot(@"UnhandledError");
    Log(e.ToString());
    throw;
}

异常需要4分钟才能被抛出

异常不太可能花4分钟才被抛出。在我看来,更有可能的是,在捕获异常之前,堆栈展开时正在释放的其他东西导致了延迟。

我怀疑:

  • 打开与外部系统(数据库、网络等)的连接
  • 任何正在释放所有被销毁的对象集合的东西。例如,这些对象是否具有复杂的IDisposable逻辑?

使用调试器运行代码并使用一些明智的断点应该可以迅速缩小问题范围。@forsvarir关于在抛出和捕获异常时捕获时间戳的建议也会给您提供帮助。

对于我来说,当异常需要很长时间才能抛出时,最常见的情况是操作系统(在我的情况下是Mac OS X)正在向文件写入核心转储(我的Mac配置为这样做)。这是一个可以考虑的地方,但我相信还有很多其他的可能性。(问题中的更多信息可能会有所帮助。)