跳转到主要内容
所有 ABBYY FineReader Engine 接口方法和属性均返回 HRESULT 类型的值。HRESULT (即”结果句柄”) 是一种用于返回成功、警告和错误值的机制。HRESULT 本质上并非任何对象的句柄,而是一个在值中编码了多个字段的 32 位整数。返回值为零表示成功,非零值表示失败。 如果方法或属性调用未成功,该方法或属性将返回一个指示失败原因的 HRESULT 代码,并通过 IErrorInfo 接口提供更详细的错误描述。
对于 Windows:请参阅 COM 相关文档,以获取错误处理的详细说明。
  • C# (仅限 Windows) :为 COM 接口自动生成的包装器会检测错误并将其转换为标准异常。请使用以下语句将一系列 ABBYY FineReader Engine 方法括起来:
try
{
    ...
}
catch( Exception e )
{
    ...
}
  • 使用 Native COM support 的 C++ (Windows) 。Native COM support 技术将 interface 函数的 HRESULT 代码转换为特殊 type 的异常 (_com_error) ,并自动使用来自 IErrorInfo 的信息。因此,一系列 FineReader Engine method 可以用以下语句包裹:
try {
    ...
}
catch (_com_error& e) {
    ...
}
通常,使用 Native COM support 进行错误处理的方式与任何使用可能抛出异常的函数的 C++ 代码的标准方式相同。
  • 原生 C++ / C++。FineReader Engine 的 interface 方法和属性不会抛出异常,而是返回 HRESULT。处理这些返回码最重要的手段是 SUCCEEDED 和 FAILED 宏。它们用于测试 HRESULT 值,并据此判断操作结果——成功或失败。要获取指向 IErrorInfo 对象 interface 的指针,请使用以下 API 函数:
    • Windows 平台使用 GetErrorInfo
    • Linux 和 macOS 平台使用 GetFREngineErrorInfo:
wchar_t* GetErrorMessage() {
   IErrorInfo* errorInfo;
   if( GetFREngineErrorInfo( 0, &errorInfo ) == S_OK && errorInfo != 0 ) {
      // 获取错误描述 
      wchar_t* description;
      errorInfo->GetDescription( &description );
      errorInfo->Release();
      return description;
   } else {
      return L"Unknown error";
   }
}
  • Java (仅限 Linux 和 Windows) 。有关 Java 中错误处理的建议,请参阅在 Java 中使用 ABBYY FineReader Engine
  • Visual Basic (仅限 Windows) 。Visual Basic 用户可通过 Err 对象的 Number 属性访问 HRESULT 代码。Err 对象的其他属性将使用来自 IErrorInfo 的信息进行初始化。此处的错误处理通过 On Error 语句实现。如果代码中未使用 On Error Resume Next 语句,则任何运行时错误都可能导致显示来自 IErrorInfo 的错误消息并停止代码执行。

另请参阅

标准返回代码