Error Handling

COM uses three schemes to report error information to client applications:

  • All COM interface methods return an integer status code (known as an HRESULT ), with COM defining many common values for these HRESULTs. There is an HRESULT to indicate success and a number of HRESULTs that indicate warnings. All other HRESULT values indicate an error status.

  • COM defines two special interfaces that report extended error information—ISupportErrorInfo and IErrorInfo. When any method fails, the client can perform a QueryInterface() to determine if the interface supports providing additional error information.

  • IDispatch (automation) interfaces have a standard technique for reporting COM exceptions. When an IDispatch object encounters an error, it fills out an exception structure and returns it to the caller.

The PythonCOM framework combines all these error-reporting mechanisms into a single, Python-exception mechanism. This means you can effectively ignore the three techniques listed: PythonCOM unifies them, so you never need to know how the details of an error were obtained.

All COM errors are reported to Python programs as pythoncom.com_error exceptions. The exception value has the following parts:

  • The HRESULT of the COM function.

  • A text representation of the HRESULT. For example, if the HRESULT is E_NOINTERFACE, the text representation is (for English users) “No such interface supported.”

  • Additional exception information as described later in this chapter, or None if no additional ...

Get Python Programming On Win32 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.