> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# エラー処理

> ABBYY FineReader Engine におけるエラー処理: HRESULT の戻り値、IErrorInfo の詳細、Windows での C# try/catch パターン、および HRESULT コードを実用的なメッセージに変換する方法。

ABBYY FineReader Engine のすべてのインターフェイスのメソッドとプロパティは、HRESULT 型の値を返します。HRESULT ("result handle" の略) は、成功、warning、エラーを表す値を返すための仕組みです。HRESULT は実際には何かのハンドルではなく、複数のフィールドが値の中にエンコードされた 32 ビット値にすぎません。結果が 0 の場合は成功、0 以外の場合は失敗を示します。

メソッドまたはプロパティの呼び出しが成功しなかった場合、そのメソッドまたはプロパティは失敗を示す HRESULT コードを返します。さらに、IErrorInfo インターフェイスを通じて、エラーのより詳細な説明も提供されます。

<Note>
  Windows の場合: エラー処理の詳細については、COM のドキュメントを参照してください。
</Note>

* 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](/ja/fine-reader/engine/guided-tour/advanced-techniques/programming-aspects/using-in-java)を参照してください。
* Visual Basic (Windows のみ) 。Visual Basic ユーザーは、Err オブジェクトの Number プロパティを使用して HRESULT コードにアクセスできます。Err オブジェクトのその他の属性は、IErrorInfo の情報で初期化されます。ここでのエラー処理には、On Error ステートメントを使用します。コード内のどこでも On Error Resume Next ステートメントを使用していない場合、発生した実行時エラーにより、IErrorInfo のエラーメッセージが表示され、コードの実行が停止することがあります。

<div id="see-also">
  ## 関連項目
</div>

[標準の戻りコード](/ja/fine-reader/engine/api-reference/return-codes)
