Die QAnywhere C++-, Java- und .NET-APIs enthalten spezielle Objekte und Eigenschaften für die Verarbeitung von Ausnahmefehlern.
Die QAException-Klasse kapselt Ausnahmefehler von QAnywhere-Clientanwendungen. Nachdem Sie einen QAnywhere-Ausnahmefehler abgefangen haben, können Sie QAException ErrorCode- und Message-Eigenschaften verwenden, um den Fehlercode und die Fehlermeldung zu ermitteln.
Beachten Sie: Wenn eine QAException innerhalb eines Nachrichten-Listenerdelegaten ausgelöst und im Nachrichten-Listener nicht abgefangen wird, erfolgt ihre Protokollierung in der QAManager-Logdatei. Da nicht abgefangene QAExceptions nur protokolliert werden, wird empfohlen, alle Ausnahmefehler in Nachrichten-Listenerdelegaten zu erfassen oder durch Ausnahme-Listenerdelegate zu erfassen, damit eine Weiterverarbeitung möglich ist.
Weitere Informationen zu Nachrichten-Listenerdelegaten und Ausnahme-Listenerdelegaten finden Sie unter:
Weitere Informationen zur Logdatei finden Sie unter Konfigurationseigenschaften des QAnywhere-Managers.
Nach dem Auslösen einer QAException wird die laufende Transaktion zurückgesetzt. Wenn dies in einem Nachrichten-Listener mit einem QATransactionalManager erfolgt, wird die Nachricht, die beim Auslösen der QAException verarbeitet wurde, in die Empfangswarteschlange zurückgesetzt, damit sie nochmals empfangen wird. Sie können die Nachrichtenspeichereigenschaft ias_MaxDeliveryAttempts verwenden, um eine Endlosschleife zu verhindern.
Wenn die Eigenschaft ias_MaxDeliveryAttempts von einer QAnywhere-Anwendung auf eine positive Ganzzahl n eingestellt wird, wie in mgr.SetIntStoreProperty( "ias_MaxDeliveryAttempts", 5 )
, versucht der QAnywhere-Client bis zu n Mal, eine nicht bestätigte Nachricht zu empfangen. Danach wird der Status der Nachricht auf "Nicht empfangbar" gesetzt. Wenn
die Eigenschaft ias_MaxDeliveryAttempts nicht festgelegt wurde oder negativ ist, versucht der QAnywhere-Client den Empfang
der Nachricht ohne Limit.
Weitere Hinweise finden Sie unter:
In C++ kapselt die QAError-Klasse Ausnahmefehler von QAnywhere-Clientanwendungen. Sie können die QAManagerBase::getLastError()- oder QAManagerFactory::getLastError()-Methode verwenden, um den mit der zuletzt ausgeführten Methode verbundenen Fehlercode zu ermitteln. Sie können die entsprechende getLastErrorMessage()-Methode verwenden, um den Fehlertext zu erhalten.
Eine Liste der Fehlercodes und weitere Hinweise finden Sie unter QAError-Klasse.
Weitere Informationen zu getLastError und getLastErrorMessage finden Sie unter:
Die QAException-Klasse kapselt Ausnahmefehler von QAnywhere-Clientanwendungen. Nachdem Sie einen QAnywhere-Ausnahmefehler abgefangen haben, können Sie QAException ErrorCode- und Message-Eigenschaften verwenden, um den Fehlercode und die Fehlermeldung zu ermitteln.
Wenn eine QAException innerhalb eines Nachrichten-Listeners ausgelöst und dort nicht abgefangen wird, erfolgt ihre Protokollierung in der QAManager-Logdatei. Da nicht abgefangene QAExceptions nur protokolliert werden, wird empfohlen, alle Ausnahmefehler in Nachrichten-Listenern zu erfassen oder durch Ausnahme-Listener zu erfassen, damit eine Weiterverarbeitung möglich ist.
Weitere Informationen zu Nachrichten-Listenern und Ausnahme-Listenern finden Sie unter:
Weitere Informationen zur Logdatei finden Sie unter Konfigurationseigenschaften des QAnywhere-Managers.
Nach dem Auslösen einer QAException wird die laufende Transaktion zurückgesetzt. Wenn dies in einem Nachrichten-Listener mit einem QATransactionalManager erfolgt, wird die Nachricht, die beim Auslösen der QAException verarbeitet wurde, in die Empfangswarteschlange zurückgesetzt, damit sie nochmals empfangen wird. Sie können die Nachrichtenspeichereigenschaft ias_MaxDeliveryAttempts verwenden, um eine Endlosschleife zu verhindern.
Wenn die Eigenschaft ias_MaxDeliveryAttempts von einer QAnywhere-Anwendung auf eine positive Ganzzahl n eingestellt wird, wie in mgr.SetIntStoreProperty( "ias_MaxDeliveryAttempts", 5 )
, versucht der QAnywhere-Client bis zu n Mal, eine nicht bestätigte Nachricht zu empfangen. Danach wird der Status der Nachricht auf "Nicht empfangbar" gesetzt. Wenn
die Eigenschaft ias_MaxDeliveryAttempts nicht festgelegt wurde oder negativ ist, versucht der QAnywhere-Client den Empfang
der Nachricht ohne Limit.
Weitere Hinweise finden Sie unter:
In der folgenden Tabelle werden die Werte der QAnywhere-Fehlercodes aufgeführt:
Fehlerwert |
Beschreibung |
---|---|
0 |
Kein Fehler |
1000 |
Initialisierungsfehler |
1001 |
Beendigungsfehler |
1002 |
Auf Client-Eigenschaftsdatei kann nicht zugegriffen werden |
1003 |
Kein Ziel |
1004 |
Die Funktion ist nicht implementiert. |
1005 |
Sie können nicht in eine schreibgeschützte Nachricht schreiben. |
1006 |
Fehler beim Speichern einer Nachricht im Client-Nachrichtenspeicher |
1007 |
Fehler beim Abruf einer Nachricht aus dem Client-Nachrichtenspeicher |
1008 |
Fehler beim Initialisieren des Hintergrund-Threads |
1009 |
Fehler beim Öffnen einer Verbindung zum Nachrichtenspeicher |
1010 |
In der Client-Eigenschaftsdatei ist eine ungültige Eigenschaft enthalten. |
1011 |
Fehler beim Öffnen der Logdatei |
1012 |
Unerwartetes Nachrichtenende erreicht |
1013 |
Der Nachrichtenspeicher ist im Verhältnis zum freien Speicherplatz auf dem Gerät zu groß. |
1014 |
Der Nachrichtenspeicher wurde nicht für Messaging initialisiert. |
1015 |
Fehler beim Bezug der Warteschlangentiefe |
1016 |
QAManagerBase.getQueueDepth kann nicht benutzt werden, wenn die Nachrichtenspeicher-ID nicht eingestellt wurde. |
1017 |
QAManagerBase.getQueueDepth kann für ein bestimmtes Ziel nicht benutzt werden, wenn der Filter auf ALL gesetzt ist. |
1018 |
Fehler beim Abbrechen der Nachricht. |
1019 |
Fehler beim Abbrechen der Nachricht Eine bereits gesendete Nachricht kann nicht abgebrochen werden. |
1020 |
Fehler beim Quittieren der Nachricht |
1021 |
Der QAManager ist nicht geöffnet. |
1022 |
Der QAManager ist bereits geöffnet. |
1023 |
Der angegebene Selektor hat einen Syntaxfehler. |
1024 |
Der Zeitstempel liegt außerhalb des zulässigen Bereichs. |
1025 |
QAManager kann nicht geöffnet werden, da die Höchstzahl gleichzeitiger Serveranforderungen nicht hoch genug ist (siehe Datenbank Serveroption -gn). |
1026 |
Fehler beim Abruf der Eigenschaft aus dem Nachrichtenspeicher. |
1027 |
Fehler beim Speichern der Eigenschaft im Nachrichtenspeicher. |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |