有没有办法在Delphi应用程序中关闭运行时显示的异常消息? 我认为必须有一个指令来关闭异常消息,但我不记得了。
答案 0 :(得分:13)
通过处理TApplication.OnException
事件可以抑制大多数异常消息。如果没有为该事件分配处理程序,则应用程序对象仅显示异常消息。如果您愿意,可以在处理程序中为TApplication.ShowException
调用某些例外情况。
对于在VCL消息循环中运行时发生的异常,会触发该事件。在别处发生的异常会终止您的程序或当前线程。此外,仅针对来自Exception
的异常触发事件;从其他类下降的异常将直接传递给SysUtils.ShowException
。
无论您是否显示消息,一旦发生您尚未处理的异常,您的程序仍处于不确定状态。仅仅压制信息就像扫除地毯下的灰尘一样。更好的做法是使用MadExcept,EurekaLog或JclDebug之类的异常日志记录工具来记录有关异常的信息,并让您的客户可以选择将报告发送回你这样就可以重现错误的条件并修复它。
答案 1 :(得分:3)
我使用IDE将其关闭:
在Delphi 2007中,单击工具/选项,然后直接进入调试器选项/ CodeGear调试器/本机操作系统异常。选择“运行未处理”。调试器不会停止异常,但行为与从exe运行相同。例外情况将按原样处理。
对于指令,我不知道可以完全执行上述操作的指令,但也许这会有所帮助:
http://www.delphibasics.co.uk/ByType.asp?Type=Compiler%20Directive
答案 2 :(得分:1)
你是否有机会运行OpenGL?我没有尝试使用最新的Codegear / OpenGL版本,但过去常见的问题是OpenGL没有禁用FPU异常,但IDE希望默认情况下关闭它们(如Microsoft库那样),因此IDE会报告FPU异常 ad-nauseam ,尽管这些都不重要。
解决方案是明确转换FPU异常,您可以使用该语句在代码中执行此操作。
Set8087CW($133F);
可能还有其他库会导致问题。