IBM FileNet P8, バージョン 5.2.1            

例外処理

Content Engine の例外処理は階層化設計を採用せず、すべてのランタイム例外を単一の例外クラス (EngineRuntimeException) から派生しています。例外のエラー・コードと関連付けられたメッセージ・テキストは、別個のクラス (ExceptionCode) で定義され、例外インスタンス内のオブジェクトとして返されます。追加のクラスは個々のエラー・レコード (例外の原因)、およびエラー・レコードの格納に使用されるエラー・スタックを実装します。ErrorRecord クラスおよび ErrorStack クラスは、例外のチェーンに使用されます。

com.filenet.api.exception パッケージには、例外処理用に実装されたクラスが含まれています。

例外

すべての特定されない例外には、EngineRuntimeException クラスが使用されます。コンストラクターの引数には、例外の発生時に使用中のパラメーター値や、チェーン処理する例外を指定できます。このクラスのメソッドには、getExceptionCode および getMessage (または getLocalizedMessage) が含まれ、例外の識別子 (コード) および関連付けたメッセージ・テキストを返します。

例外は、関連付けられている例外コードに指定されたロギング・レベルに基づいてロギングに記録されます。ExceptionCode.getErrorLoggingLevel メソッドを使用すると、例外コードのログ・レベルの値を取得できます。

ロギング機能の詳細については、トレース・ロギングを参照してください。

サーバー側の例外

一般に、サーバー例外が発生すると、現在のトランザクションがすべてロールバックされます。ロールバックは、オブジェクトの save メソッドが呼び出されたとき、または UpdatingBatch インスタンスの実行中に発生します。 このトランザクションで別のサーバー呼び出しを試みると、すべて失敗します。これはユーザー・トランザクションのコンテキストに関係します。呼び出し側コードで例外をすべてキャッチし、ロールバックを開始する必要があるためです。ExceptionCode.isFatal メソッドを使用すると、例外がリカバリー不能かどうかを判別できます。isFatal フラグは、オブジェクトまたはコンテンツを取得する呼び出し (接頭部が「fetch_」ではなく「get_」であるオブジェクトまたはコンテンツ・アクセサー・メソッド) のみで使用されます。

注: オブジェクトをフェッチする呼び出し (接頭部が「fetch_」であるアクセス機能メソッド) の中で発生する致命的でない例外では、現在のトランザクションのロールバックは発生しません。

例外コード

例外コードとは、Content Engine サーバーおよび API によって生成された例外を識別する定数のことです。 例外コードと関連付けられたメッセージとの間には 1 対 1 の関係があります。例外コードはすべて ExceptionCode クラスで定義されています。例外コードの接頭部には、分類された例外グループを識別する文字 (API_、CONTENT_、または TRANSPORT_ など) が付加されています。 このクラスのメソッドには getErrorLoggingLevel があります。ErrorLoggingLevel は、例外をサーバーのエラー・ログ・ファイルに送信するタイミングを制御するために使用されます。通常のアプリケーション・エラー (E_OBJECT_NOT_FOUND など) は、サーバーのエラー・ログには送信されません。ただし、必要に応じて、トレース・ロギング機能を有効にすることにより、サーバーで発生した例外をすべて取得できます (すべてのサブシステムに対してトレース・ロギング機能を有効化を参照してください)。

例外のチェーン処理

例外のチェーン処理は主に、外部例外 (Java™ 標準例外など) を Content Engine のランタイム例外にチェーンするために使用されます。ErrorStack クラスは、例外の原因を格納します (ErrorRecord インスタンスとして実装)。チェーンされた例外が返されると、ErrorStack インスタンスの最上位レコードが、ErrorStack の参照を保持する EngineRuntimeException インスタンスに変換されます。この EngineRuntimeException インスタンスがクライアントに対して発行されて、スタック内をナビゲートして原因を見つけることができるようになります。



最終更新日: 2015 年 10 月
exception_concepts.htm

© Copyright IBM Corp. 2015.