Application.OnException работает в COM Dll? - PullRequest
1 голос
/ 23 марта 2010

Я хочу записать некоторые, казалось бы, случайные ошибки, которые я получаю в написанной на Delphi COM DLL. Как мне это сделать? Можно ли использовать обработчик событий Application.OnException? У меня есть контроль над источником COM DLL, но не вызывающее приложение.

Ответы [ 2 ]

5 голосов
/ 23 марта 2010

Нет.В DLL нет прикладной переменной, поскольку она не является приложением.

Правильный способ обработки исключений в DLL - использовать блоки try..except.Самый простой метод - поместить вокруг каждой из ваших экспортируемых функций блок try..except, который будет перехватывать ошибки, прежде чем они распространятся за пределы DLL.

Вы можете попробовать создать собственную глобальную функцию с именем OnException и иметь исключениеблоки вызывают его и передают исключение, которое они получают, или что-то в этом роде.Это в основном то, что делает Application.OnException;он может просто сделать это автоматически, поскольку у него есть единственная известная точка в нижней части стека вызовов, которая помещается в блок try..except.

2 голосов
/ 23 марта 2010

Я не думаю, что Application.OnException будет работать для вас в COM DLL.Возможно, вам придется перейти прямо к низкому уровню вещи.Взгляните на RaiseExceptionProc в системном блоке.Это должно позволить вам получить информацию, которую вы хотите.

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