COM error codes (for C++, VB)

 

ll ABBYY FineReader Engine interface methods and properties return value of the HRESULT type. The HRESULT (for result handle) is a way of returning success, warning, and error values. HRESULTs are not handles to anything; they are only 32-bit values with several fields encoded in the value. A zero result indicates success and a non-zero result indicates failure.

Note: Please do not handle exceptions that may be thrown during the work of the ABBYY FineReader Engine interface methods, because these exceptions are handled within ABBYY FineReader Engine. 

If a method or property call was not successful, this method or property returns an HRESULT code that indicates the failure. Besides, it initializes the IErrorInfo object with a more detailed description of the error. Visual Basic users may access the HRESULT code through the Number property of the Err object. Other attributes of the Err object are initialized with the information from the IErrorInfo. Please refer to the documentation on COM for the detailed description of error handling. The most general tips for it are as follows:

  • Visual Basic. Error handling here is performed with the use of the On Error statement. If you do not use the On Error Resume Next statement anywhere in your code, any run-time error that occurs can cause an error message from the IErrorInfo object to be displayed and code execution stopped.
  • Raw C++. ABBYY FineReader Engine interface methods and properties cannot throw exceptions but return HRESULTs. The most important means for handling these return codes are SUCCEEDED and FAILED macros. They test the HRESULT value and deduce from it what was the result of the operation — success or failure. To get a pointer to the IErrorInfo object's interface, use the GetErrorInfo API function.
  • C++ with the Native COM support. The Native COM support technology translates the HRESULT codes of interface functions into exceptions of a special type (_com_error) and automatically uses information from the IErrorInfo object. Thus, a sequence of ABBYY FineReader Engine methods may be enclosed by the statements:
try {
    ...
}
catch (_com_error e) {
    ...
}
  • If any method or property that was called from inside the try-catch block returns an error code, this leads to throwing an exception, the code after the erroneous statement is not executed, and control is transferred to the code after the catch statement. Generally, error handling with the Native COM support may be performed in a way standard for any C++ code using functions that may throw exceptions.

List of COM error codes and description is at https://abbyy.zendesk.com/knowledge/articles/360002940199 

Was this article helpful?

0 out of 0 found this helpful

Have more questions? Submit a request

Recently viewed