4

发生异常或错误(如访问冲突、indy 套接字错误、超时等)时,是否有办法禁用所有对话框?它们有时会在我的程序中抛出,但这些错误无论如何都不是致命的,可以忽略,只是对话框令人不安。我使用德尔福 7。

4

4 回答 4

7

如果您只是不想显示异常窗口,请转到:

Tools/Options/Debugger Options/Language Exceptions并禁用 CheckBox Notify on language exceptions。这对 Delphi 2010 来说是有效的。

(我不记得它是否与 Delphi 7 中的 CheckBox 相同)。

编辑:在某些情况下,例外是不可避免的,特别是当我们处理来自互联网的未知文件时。因此,我相信您的异常在 Indy 下得到了正确处理,只需关闭语言异常通知

于 2012-06-13T18:43:04.650 回答
5

您可以自定义 Application.OnException 事件。但是恕我直言...

  • Application.OnException 最适合记录您忘记处理的异常。
  • 仅当您迫切需要性能时才应使用 Application.OnException 来捕获异常(在这种情况下,您应该预料到执行路径会中断)。

和:

  • 访问冲突是致命的错误——你必须追踪并清除所有的 AV。
  • 您不能仅通过 Application.OnException 覆盖来隐藏异常对话框 - 您应该以正确的方式使用 try finally/except 。
于 2012-06-13T18:34:45.330 回答
2

绕过 Application.OnException 事件。但是我不建议隐藏所有异常,恕我直言,这是糟糕的设计。

于 2012-06-13T18:26:50.407 回答
0

@ GJ - Delphi 2007 有那个复选框。但同样如上所述,访问冲突不是应该忽略的异常。

于 2012-06-14T22:22:55.680 回答