メインコンテンツへスキップ
ABBYY FineReader Engine のすべてのインターフェイスのメソッドとプロパティは、HRESULT 型の値を返します。HRESULT (“result handle” の略) は、成功、warning、エラーを表す値を返すための仕組みです。HRESULT は実際には何かのハンドルではなく、複数のフィールドが値の中にエンコードされた 32 ビット値にすぎません。結果が 0 の場合は成功、0 以外の場合は失敗を示します。 メソッドまたはプロパティの呼び出しが成功しなかった場合、そのメソッドまたはプロパティは失敗を示す HRESULT コードを返します。さらに、IErrorInfo インターフェイスを通じて、エラーのより詳細な説明も提供されます。
Windows の場合: エラー処理の詳細については、COM のドキュメントを参照してください。
  • C# (Windows のみ) 。COM インターフェイス用に自動生成されたラッパーはエラーを検出し、それらを標準の例外に変換します。ABBYY FineReader Engine の一連のメソッドは、次のステートメントで囲みます。
try
{
    ...
}
catch( Exception e )
{
    ...
}
  • Native COM support を使用する C++ (Windows) 。Native COM support テクノロジでは、インターフェイス関数の HRESULT コードが特殊な型 (_com_error) の例外に変換され、IErrorInfo の情報も自動的に使用されます。したがって、一連の FineReader Engine メソッドは次のステートメントで囲むことができます。
try {
    ...
}
catch (_com_error& e) {
    ...
}
一般に、Native COM support でのエラー処理は、例外をスローする可能性がある関数を使用する通常の C++ コードと同じ標準的な方法で行えます。
  • Raw C++ / C++。FineReader Engine のインターフェイスのメソッドおよびプロパティは例外をスローできず、代わりに HRESULT を返します。これらの戻りコードを処理する最も重要な手段は、SUCCEEDED マクロと FAILED マクロです。これらは HRESULT の値を評価し、操作の結果が成功か失敗かを判定します。IErrorInfo オブジェクトのインターフェイスへのポインターを取得するには、次の 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 でのエラー処理に関する詳細は、Using ABBYY FineReader Engine in Javaを参照してください。
  • Visual Basic (Windows のみ) 。Visual Basic ユーザーは、Err オブジェクトの Number プロパティを使用して HRESULT コードにアクセスできます。Err オブジェクトのその他の属性は、IErrorInfo の情報で初期化されます。ここでのエラー処理には、On Error ステートメントを使用します。コード内のどこでも On Error Resume Next ステートメントを使用していない場合、発生した実行時エラーにより、IErrorInfo のエラーメッセージが表示され、コードの実行が停止することがあります。

関連項目

標準の戻りコード