我最近遇到了一个模态表单在奇怪的时间消失(一个向导)的问题。经过漫长的调试会话,事实证明这是由于一段代码中未处理的异常导致的,该代码不是包含模态表单的单元的一部分。问题是由于 Delphi 的代码显示了模式形式。它将显示操作包装在一个 try finally 块中,该块在退出时隐藏了模态表单。当发生异常时,即使在模态窗体控件之外的代码中,异常处理程序也会在显示的模态窗体的上下文中引发它,从而触发前面提到的 try/finally 块。所以模态形式只是在一个看似奇怪的时间消失了。
我确实有报告错误的更高级别的异常代码,但我真的希望能够从模态表单的上下文中捕获错误,原因有两个。首先,通过在模态表单的上下文中显示错误来提供不那么刺耳的用户体验。其次,如果可能,在不退出模态表单的情况下尝试错误恢复操作。
有没有办法从该单元内捕获在模态表单单元之外发生的异常?如果您对此有策略,请告诉我您必须实施的任何细微差别,以避免键盘输入焦点和表单可见性和窗口状态出现奇怪问题,因为大多数解决方案通常最终无法使用。