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

Previous  Top  Next

    
 

 

 

Code:

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;

 

 

©Drkb::04319

       

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