Как перехватить необработанные исключения Delphi 6 из контекста модальной формы? - PullRequest
1 голос
/ 19 марта 2012

У меня недавно была проблема с исчезновением модальной формы (волшебником) в нечетное время.После продолжительного сеанса отладки выясняется, что это произошло из-за необработанного исключения в части кода, которая была , а не частью модуля, который содержал модальную форму.Проблема связана с кодом Delphi, который показывает модальные формы.Он оборачивает операцию show в блок try finally, который скрывает модальную форму при выходе.Когда возникает Исключение, даже в коде вне контроля модальной формы, обработчик Исключения вызывает его в контексте модальной формы, которая показывает тем самым запуск ранее упомянутого блока try / finally.Таким образом, модальная форма просто исчезает в кажущееся нечетное время.

У меня есть код исключения более высокого уровня, который сообщает об ошибке, но я действительно хотел бы иметь возможность перехватить ошибку из контекста модальной формы длядве причины.Во-первых, чтобы обеспечить менее jarring взаимодействия с пользователем, отображая ошибку в контексте модальной формы.Во-вторых, попытаться выполнить операции восстановления после ошибок, если это возможно, без выхода из модальной формы.

Есть ли способ перехватить исключения, возникающие вне модуля модальной формы, внутри этого модуля?Если у вас есть стратегия для этого, сообщите мне о любых нюансах, которые вам пришлось реализовать, чтобы избежать странных проблем с фокусом ввода с клавиатуры и видимостью формы и состоянием окна, поскольку именно здесь большинство решений обычно оказываются непригодными для использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...