在我们的应用程序中,我们创建了几个 Exceptions 类来满足我们的所有需求。但现在的问题是,引发的异常对话框总是 MessageTypemtError
并且当然显示mtError
-Icon。
对于我们的一些例外情况,我更喜欢不那么激进的Icon/MessageType,例如 MessageType mtInformation
。
有什么方法可以直接在 Exceptionclass 中更改图标,而无需try...except
在每次出现时再次提升和捕获它?
在我们的应用程序中,我们创建了几个 Exceptions 类来满足我们的所有需求。但现在的问题是,引发的异常对话框总是 MessageTypemtError
并且当然显示mtError
-Icon。
对于我们的一些例外情况,我更喜欢不那么激进的Icon/MessageType,例如 MessageType mtInformation
。
有什么方法可以直接在 Exceptionclass 中更改图标,而无需try...except
在每次出现时再次提升和捕获它?
您将需要自定义顶级异常处理程序。
编写一个事件处理程序并将其附加到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
. 对于那些没有得到特殊待遇的例外情况,您应该这样做。