OptimisticCollisionException は、直接受け取るか、ObjectGridException と一緒に受け取ることができます。
以下のコードは、 例外を catch し、そのメッセージを表示する方法の例です。
try {
...
} catch (ObjectGridException oe) {
System.out.println(oe);
}
OptimisticCollisionException は、ほとんど同じ時間に 2 つの異なるクライアントが同じマップ・エントリーを更新しようとしたとき作成されます。例えば、あるクライアントがセッションをコミットしてマップ・エントリーを更新しようとした場合に、そのコミットの直前に別のクライアントがデータを読み取っていたとすると、そのデータは正しくありません。このクライアントが正しくないデータをコミットしようとすると、例外が作成されます。
そのような例外のトラブルシューティングのとき、例外をトリガーしたエントリーに対応するキーを検索すると便利です。OptimisticCollisionException の利点は、キーを表すオブジェクトを戻す getKey メソッドが含まれていることです。次の例は、OptimisticCollisionException をキャッチするときの、キーを検索し印刷する方法を示しています。
try {
...
} catch (OptimisticCollisionException oce) {
System.out.println(oce.getKey());
}
OptimisticCollisionException は、ObjectGridException が表示される原因となる場合があります。この場合、以下のコードを使用して例外タイプを判別し、 キーを印刷できます。以下のコードは、以下のセクションで説明するように、findRootCause ユーティリティー・メソッドを使用しています。
try {
...
}
catch (ObjectGridException oe) {
Throwable Root = findRootCause( oe );
if (Root instanceof OptimisticCollisionException) {
OptimisticCollisionException oce = (OptimisticCollisionException)Root;
System.out.println(oce.getKey());
}
}
Throwable オブジェクトの根本原因がわかると、エラーの発生源を分離する場合に役立ちます。 次の例では、例外ハンドラーでユーティリティー・メソッドを使用して Throwable オブジェクトの根本原因を検出する方法について説明します。
例:
static public Throwable findRootCause( Throwable t )
{
// Start with Throwable that occurred as the root.
Throwable root = t;
// Follow cause chain until last Throwable in chain is found.
Throwable cause = root.getCause();
while ( cause != null )
{
root = cause;
cause = root.getCause();
}
// Return last Throwable in the chain as the root cause.
return root;
}