Исключения в плагине.

Здесь обсуждаются технические аспекты создания дополнений.
Аватара пользователя
Dj Arktic
Сообщения: 99
Зарегистрирован: 22:55, 04.12.2010

Исключения в плагине.

Сообщение Dj Arktic »

В общем проблема действительно сложная.
Я написал собственный обработчик ошибок, и столкнулся с проблемой.
Если ошибка вызывается из потока либо из процедуры, которая запускается не из PluginProcess то все тип топ.
Если ошибку дает процедура, которую породила CommfortProcess вылетает что-то типо
Ошибка при обработке плагином сообщения с ID=5. Плагин остановлен.
Как избежать остановки плагина в таких ситуациях?
Как сделать, чтобы мой обработчик ошибок сам обработал исключение?

Пишу на Delphi, код обработчика прикреплю, если нужно.
KGB
Сообщения: 659
Зарегистрирован: 08:54, 13.07.2010
Откуда: Чебоксары, Россия
Контактная информация:

Re: Исключения в плагине.

Сообщение KGB »

Стандартный try...except для блоков кода, в которых может возникнуть исключение. Например, весь код функции Plugin Process сделать таким:

Код: Выделить всё

procedure PluginProcess(dwMessageID : DWORD; bMessage : TBytes; dwMessageLength : DWORD);
begin
  try
    PluginProcessInternal(dwMessageID, bMessage, dwMessageLength);
  except 
    on e: Exception do
      ExHandler(e); // функция-обработчик
  end;
end;

procedure PluginProcessInternal(dwMessageID : DWORD; bMessage : TBytes; dwMessageLength : DWORD);
begin
  // Непосредственная обработка сообщения плагином
end;
Вообще, такой код на случай "где-то ошибка не поймалась", ловить их все же лучше ближе к месту возникновения.
Аватара пользователя
Dj Arktic
Сообщения: 99
Зарегистрирован: 22:55, 04.12.2010

Re: Исключения в плагине.

Сообщение Dj Arktic »

У меня проблема с юникодом, 7-ой делфи с ним не дружит, и поэтому процедура авторизации выносит ошибку. Хотелось бы знать что-то по существеннее, чем try... except
Аватара пользователя
Dj Arktic
Сообщения: 99
Зарегистрирован: 22:55, 04.12.2010

Re: Исключения в плагине.

Сообщение Dj Arktic »

Хотя такой код работает..
Спасибо =)
Ответить