Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » QAnywhere » QAnywhere クライアント・アプリケーションの作成

 

QAnywhere 例外の処理

QAnywhere C++、Java、.NET API には、例外処理のための特別なオブジェクトとプロパティがあります。

.NET 例外

QAException クラスは、QAnywhere クライアント・アプリケーションの例外をカプセル化します。QAnywhere 例外をキャッチした後で、QAException ErrorCode プロパティと Message プロパティを使用して、エラー・コードとエラー・メッセージを特定できます。

QAException がメッセージ・リスナ委任でスローされ、メッセージ・リスナでキャッチされなかった場合は、その内容が QAManager ログ・ファイルに記録されることに注意してください。キャッチされなかった QAException はログに記録されるだけなので、すべての例外がメッセージ・リスナ委任内または例外リスナ委任によって処理されるようにすることをおすすめします。こうすることで、例外は適切に処理されます。

メッセージ・リスナ委任と例外リスナ委任の詳細については、次の項を参照してください。

ログ・ファイルの詳細については、QAnywhere Manager の設定プロパティを参照してください。

QAException がスローされると、現在のトランザクションはロール・バックされます。QATransactionalManager を使用するメッセージ・リスナでこれが発生すると、QAException がスローされたときに処理されていたメッセージはキューに戻されます。これにより、メッセージが再度受信されることになります。無限ループを回避するため、メッセージ・ストア・プロパティ ias_MaxDeliveryAttempts を使用できます。

プロパティ ias_MaxDeliveryAttempts が、mgr.SetIntStoreProperty( "ias_MaxDeliveryAttempts", 5 ) のように QAnywhere アプリケーションによって正の整数 n に設定されると、QAnywhere クライアントは、メッセージのステータスを受信不可にする前に、受信確認されていないメッセージを最大 n 回まで受信するように試みます。プロパティ ias_MaxDeliveryAttempts が設定されていないか、負の値に設定されると、QAnywhere クライアントは、メッセージの受信を無制限に試みます。

詳細については、次の項を参照してください。

C++ 例外

C++ の場合は、QAError クラスが QAnywhere クライアント・アプリケーションの例外をカプセル化します。QAManagerBase::getLastError() メソッドまたは QAManagerFactory::getLastError() メソッドを使用すると、最後に実行されたメソッドに関連するエラー・コードを特定できます。また、対応する getLastErrorMessage() メソッドを使用すると、エラー・テキストを取得できます。

エラー・コードのリストと詳細については、QAError クラスを参照してください。

getLastError と getLastErrorMessage の詳細については、次の項を参照してください。

Java 例外

QAException クラスは、QAnywhere クライアント・アプリケーションの例外をカプセル化します。QAnywhere 例外をキャッチした後で、QAException ErrorCode プロパティと Message プロパティを使用して、エラー・コードとエラー・メッセージを特定できます。

QAException がメッセージ・リスナでスローされ、メッセージ・リスナでキャッチされなかった場合は、その内容が QAManager ログ・ファイルに記録されます。キャッチされなかった QAException はログに記録されるだけなので、すべての例外がメッセージ・リスナ内または例外リスナによって処理されるようにすることをおすすめします。こうすることで、例外は適切に処理されます。

メッセージ・リスナと例外リスナの詳細については、次の項を参照してください。

ログ・ファイルの詳細については、QAnywhere Manager の設定プロパティを参照してください。

QAException がスローされると、現在のトランザクションはロール・バックされます。QATransactionalManager を使用するメッセージ・リスナでこれが発生すると、QAException がスローされたときに処理されていたメッセージはキューに戻されます。これにより、メッセージが再度受信されることになります。無限ループを回避するため、メッセージ・ストア・プロパティ ias_MaxDeliveryAttempts を使用できます。

プロパティ ias_MaxDeliveryAttempts が、mgr.SetIntStoreProperty( "ias_MaxDeliveryAttempts", 5 ) のように QAnywhere アプリケーションによって正の整数 n に設定されると、QAnywhere クライアントは、メッセージのステータスを受信不可にする前に、受信確認されていないメッセージを最大 n 回まで受信するように試みます。プロパティ ias_MaxDeliveryAttempts が設定されていないか、負の値に設定されると、QAnywhere クライアントは、メッセージの受信を無制限に試みます。

詳細については、次の項を参照してください。

エラー・コード

QAnywhere のエラー・コードを次の表に示します。

エラー値

説明

0

エラーはありません。

1000

初期化エラーです。

1001

終了エラーです。

1002

クライアントのプロパティ・ファイルにアクセスできません。

1003

宛先が指定されていません。

1004

この関数は実装されていません。

1005

読み込み専用モードであるため、メッセージに書き込みできません。

1006

メッセージをクライアント・メッセージ・ストアに格納中にエラーが発生しました。

1007

クライアント・メッセージ・ストアからメッセージを取得中にエラーが発生しました。

1008

バックグラウンド・スレッドを初期化中にエラーが発生しました。

1009

メッセージ・ストアへの接続を開くときにエラーが発生しました。

1010

クライアントのプロパティ・ファイルに無効なプロパティが存在します。

1011

ログ・ファイルを開くときにエラーが発生しました。

1012

予期しないメッセージの終わりに到達しました。

1013

メッセージ・ストアがデバイスの空きディスク領域と比べて大きすぎます。

1014

メッセージ・ストアがメッセージング向けに初期化されていません。

1015

キューの深さの取得中にエラーが発生しました。

1016

メッセージ・ストア ID が設定されていない場合は QAManagerBase.getQueueDepth を使用できません。

1017

フィルタが ALL の場合、指定された宛先には QAManagerBase.getQueueDepth を使用できません。

1018

メッセージのキャンセル中にエラーが発生しました。

1019

メッセージのキャンセル中にエラーが発生しました。すでに送信されたメッセージをキャンセルすることはできません。

1020

メッセージの確認中にエラーが発生しました。

1021

QAManager が開いていません。

1022

QAManager はすでに開いています。

1023

指定されたセレクタに構文エラーがあります。

1024

タイムスタンプが許容範囲外です。

1025

サーバの最大同時要求数が少なすぎるため QAManager を開くことができません (データベース -gn サーバ・オプション を参照)。

1026

メッセージ・ストアからプロパティを取得中にエラーが発生しました。

1027

プロパティをメッセージ・ストアに格納中にエラーが発生しました。