如何在Delphi中禁用所有异常提升?

时间:2012-06-13 17:53:18

标签: delphi exception dialog delphi-7 raise

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

4 个答案:

答案 0 :(得分:6)

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

工具/选项/调试器选项/语言异常 并禁用CheckBox 语言异常通知 。对于Delphi 2010而言,这是不可思议的。

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

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

答案 1 :(得分:5)

您可以自定义Application.OnException事件。但是IMVHO ......

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

  • 访问冲突是致命错误 - 您必须追踪并清除所有AV。
  • 您无法通过Application.OnException覆盖隐藏异常对话框 - 您应该以正确的方式使用try finally / except。

答案 2 :(得分:2)

绕过Application.OnException事件。但是我不建议隐藏每个例外,恕我直言,这是一个糟糕的设计。

答案 3 :(得分:0)

@ GJ - Delphi 2007有这个复选框。但同样如上所述,访问冲突不是人们应该忽略的那种例外。