Error Handling

All ABBYY FineReader Engine interface methods and properties return a value of the HRESULT type. The HRESULT (for "result handle") is a way of returning success, warning, and error values. HRESULTs are really 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.

If a method or property call was not successful, this method or property returns an HRESULT code that indicates the failure. Besides, it provides a more detailed description of the error through the IErrorInfo interface. Please refer to the documentation on COM for detailed description of error handling. The most general tips for it you can find below:

  • C#. Automatically generated wrappers for COM interfaces detect errors and translate them to standard exceptions. Enclose a sequence of ABBYY FineReader Engine methods by the statements:
try
{
    ...
}
catch( Exception e )
{
    ...
}
    
  • 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 IErrorInfo. Thus, a sequence of FineReader Engine methods may be enclosed by the statements:
try {
    ...
}
catch (_com_error& e) {
    ...
}
    

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.

  • Raw C++. FineReader Engine interface methods and properties cannot throw exceptions but return HRESULTs. The most important means for handling these return codes are the 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.
  • Visual Basic. 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 IErrorInfo. 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 IErrorInfo to be displayed and code execution stopped.
  • Java. See Using ABBYY FineReader Engine in Java for advice on error handling in Java.

See also

Standard Return Codes

24.03.2023 8:51:52

Usage of Cookies. In order to optimize the website functionality and improve your online experience ABBYY uses cookies. You agree to the usage of cookies when you continue using this site. Further details can be found in our Privacy Notice.