在Delphi中更改引发异常的图标

Obl*_*obl 1 delphi exception-handling exception delphi-2007

在我们的应用程序中,我们已经为我们所有的需求创建了几个Exceptions类.但现在的问题是,引发的异常对话框总是MessageType mtError,当然mtError还会显示-Icon.
对于我们的一些例外,我更喜欢不那么激进的 Icon/MessageType,例如MessageType mtInformation.

有没有办法直接在Exceptionclass中更改Icon而不会try...except在每次出现时再次提升和捕获它?

Dav*_*nan 6

您需要自定义顶级异常处理程序.

编写一个事件处理程序并将其附加到Application.OnException.然后,您可以按照自己喜欢的方式处理特定异常.

事件处理程序将如下所示:

procedure TMainForm.ApplicationException(Sender: TObject; E: Exception); 
begin   
  if E is EMyException then
    ShowExpectedMessageBox(E)
  else
    Application.ShowException(E);
end;
Run Code Online (Sandbox Code Playgroud)

显然你必须编写代码ShowExpectedMessageBox.这可以使用您喜欢的任何图标显示消息框.

onException的当未处理的异常到达消息循环事件被调用.如果您没有事件处理程序,则框架调用Application.ShowException.对于那些没有得到特殊待遇的例外情况,您应该做些什么.