1

在我们的应用程序中,我们创建了几个 Exceptions 类来满足我们的所有需求。但现在的问题是,引发的异常对话框总是 MessageTypemtError并且当然显示mtError-Icon。
对于我们的一些例外情况,我更喜欢不那么激进的Icon/MessageType,例如 MessageType mtInformation

有什么方法可以直接在 Exceptionclass 中更改图标,而无需try...except在每次出现时再次提升和捕获它?

4

1 回答 1

6

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

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

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

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

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

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

于 2013-04-25T07:04:35.950 回答