跳轉到主要內容
所有 ABBYY FineReader Engine 介面的方法和屬性都會回傳 HRESULT 型別的值。HRESULT (即 “result handle”) 是一種用來回傳成功、警告和錯誤值的方式。實際上,HRESULT 並不是任何事物的 Handle;它只是 32 位元的值,其中編碼了數個欄位。結果為零表示成功,非零則表示失敗。 如果方法或屬性呼叫未成功,該方法或屬性會回傳表示失敗的 HRESULT 代碼。此外,還會透過 IErrorInfo 介面提供更詳細的錯誤描述。
對於 Windows:請參閱 COM 文件,以了解錯誤處理的詳細說明。
  • C#. (僅限 Windows) 針對 COM 介面自動產生的 wrapper 會偵測錯誤,並將其轉換為標準例外狀況。請使用下列陳述式將一連串 ABBYY FineReader Engine 方法括住:
try
{
    ...
}
catch( Exception e )
{
    ...
}
  • 使用具備 Native COM 支援的 C++ (Windows) 。Native COM 支援技術會將介面函式的 HRESULT 代碼轉換為特殊型別的例外狀況 (_com_error),並自動使用 IErrorInfo 中的資訊。因此,一連串的 FineReader Engine 方法可包在下列陳述式中:
try {
    ...
}
catch (_com_error& e) {
    ...
}
一般而言,使用 Native COM 支援進行錯誤處理時,可以採用 C++ 程式碼處理可能拋出例外狀況之函式的標準方式。
  • 原生 C++ / C++。FineReader Engine 介面的方法和屬性不會拋出例外,而是傳回 HRESULT。處理這些傳回碼最重要的方式是使用 SUCCEEDED 和 FAILED 巨集。它們會檢查 HRESULT 值,並據此判斷作業結果是成功還是失敗。若要取得 IErrorInfo object’s 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 的錯誤訊息,並停止程式碼執行。

另請參閱

標準返回碼