QAnywhere C++、Java、.NET API には、例外処理のための特別なオブジェクトとプロパティがあります。
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++ の場合は、QAError クラスが QAnywhere クライアントアプリケーションの例外をカプセル化します。QAManagerBase::getLastError() メソッドまたは QAManagerFactory::getLastError() メソッドを使用すると、最後に実行されたメソッドに関連するエラーコードを特定できます。また、対応する getLastErrorMessage() メソッドを使用すると、エラーテキストを取得できます。
エラーコードのリストと詳細については、QAError クラス [QAnywhere C++]を参照してください。
getLastError と getLastErrorMessage の詳細については、次の項を参照してください。
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 dbsrv12 サーバーオプションを参照してください。 |
1026 |
メッセージストアからプロパティを取得するときにエラーが発生しました。 |
1027 |
メッセージストアにプロパティを格納するときにエラーが発生しました。 |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |