【问题标题】:turn off delphi exceptions in run time in delphi在delphi运行时关闭delphi异常
【发布时间】:2010-05-19 00:25:16
【问题描述】:

有什么方法可以关闭 Delphi 应用程序运行时显示的异常消息? 我认为必须有一个指令来关闭异常消息,但我不记得了。

【问题讨论】:

  • 您的意思是在发布构建期间?尝试原生操作系统异常?
  • 你为什么要这样做?
  • 如果您提供了想要这样做的合理理由,这个问题可能会得到更多的支持。否则,只需关闭显示器即可。

标签: delphi exception


【解决方案1】:

大多数异常消息都可以通过处理TApplication.OnException 事件来抑制。如果没有分配给该事件的处理程序,则应用程序对象仅显示异常消息。如果需要,欢迎您在处理程序中调用 TApplication.ShowException 处理某些异常。

在 VCL 消息循环中运行时发生的异常会触发该事件。其他地方发生的异常会终止您的程序或当前线程。此外,该事件仅针对来自Exception 的异常触发;来自其他类的异常直接传递给SysUtils.ShowException

无论您是否显示消息,一旦发生您尚未处理的异常,您的程序仍处于不确定状态。仅仅压制消息就像扫地毯下的灰尘一样。更好的做法是使用异常记录工具,如 MadExceptEurekaLogJclDebug,它记录有关异常的信息,并为您的客户提供将报告发回给您的选项,以便您可以重现错误的条件并修复它。

【讨论】:

  • EurekaLog(也许还有其他人?)也可以执行应用程序的自动重新启动。如果目标是防止用户看到错误,并且您希望获得高可用性(可能是信息亭?),那么使用这些调试记录器应用程序之一记录错误,然后静默重新启动应用程序。否则,您将隐藏错误,直到您的应用程序降级到无法运行并且无论如何都需要重新启动。
【解决方案2】:

我使用 IDE 将其关闭:

在 Delphi 2007 中,单击工具 / 选项,然后向下转到调试器选项 / CodeGear 调试器 / 本机操作系统异常。选择“运行未处理”。调试器不会因异常而停止,但其行为与从 exe 运行相同。异常将照此处理。

对于指令,我不知道有哪一个可以完全做到以上,但也许这会有所帮助:

http://www.delphibasics.co.uk/ByType.asp?Type=Compiler%20Directive

【讨论】:

    【解决方案3】:

    您是否正在运行 OpenGL?我没有尝试过使用更新的 Codegear/OpenGL 构建,但曾经存在一个问题,即 OpenGL 没有禁用 FPU 异常,但 IDE 期望这些默认情况下会被关闭(就像 Microsoft 库一样)所以 IDE会报告 FPU 异常ad-nauseam,尽管这些并不重要。

    解决方案是显式关闭 FPU 异常,您可以使用语句在代码中执行此操作。

    Set8087CW($133F);
    

    可能还有其他库也会导致问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-18
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2010-09-15
      • 2017-09-18
      • 1970-01-01
      相关资源
      最近更新 更多