Как обрабатывать ошибки в COM-объектах

TCustomBasePlugObject = class(TAutoObject, IUnknown, IDispatch)
...
protected
function SafeCallException(ExceptObject: TObject; ExceptAddr:
 Pointer): {$IFDEF _D4_}HResult{$ELSE}Integer{$ENDIF}; override;
...
function TCustomBasePlugObject.SafeCallException;
var
 ExMsg: string;
begin
 Result := inherited SafeCallException(ExceptObject, ExceptAddr);
 try
  if ExceptObject is EAbort then
  exit;
  ExMsg := 'Exception: PlugObject="' if ExceptObject is Exception then
  begin
  ExMsg := ExMsg + #13' Message: '#13' ' +
  Exception(ExceptObject).Message +
  #13' Module:' + GetModuleFileName +
  #13' Adress:' + Format('%p', [ExceptAddr]);
  if (ExceptObject is EOleSysError) and
  (EOleSysError(ExceptObject).ErrorCode < 0) then
  ExMsg := ExMsg + #13'
  OleSysError.ErrorCode =
  '
+IntToStr(EOleSysError(ExceptObject).ErrorCode);
  end;
  toLog(ExMsg);
 except
 end;
end;


Взято с http://delphiworld.narod.ru

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...