Fehlerbehandlung¶
Die Fehlerbehandlung ist ein entscheidender Bestandteil jeder zuverlässigen und benutzerfreundlichen Open API-Anwendung. Wenn Sie verschiedene Fehler nicht abfangen und verarbeiten, können Ihre Benutzer eine fehlerhafte Benutzeroberfläche erleben oder daran gehindert werden, bestimmte wesentliche Aktionen vollständig auszuführen.
Grob gesagt können je nach Ebene, auf der ein Fehler auftritt, unterschiedliche Fehlerbehandlungsprozesse implementiert werden.
- Auf der Daten- und Domänenebene. In einigen Fällen kann das cTrader-Backend die Nachricht
ProtoErrorResals Antwort auf eine Ihrer Anfragen senden. Für Vorgänge im Zusammenhang mit Aufträgen, Deals oder Positionen können Sie auch die NachrichtProtoOAOrderErrorEventerhalten. - Auf der Domänen- und Anwendungsebene. Benutzer können Aktionen ausführen, die Sie in Ihrem Code nicht berücksichtigt haben, was dazu führt, dass sich Ihre Anwendung unerwartet verhält.
Die Mechanismen zur Behandlung von Fehlern auf diesen Ebenen unterscheiden sich und werden im Folgenden beschrieben.
Fehlerbehandlung auf der Daten- und Domänenebene ¶
Sie können ProtoErrorRes oder ProtoOAOrderErrorEvent in den folgenden Situationen erhalten (beachten Sie, dass die Liste nicht vollständig ist):
- Versuch, einen Auftrag für ein Symbol zu platzieren, für das der Markt geschlossen ist.
- Senden einer falschen oder nicht unterstützten Nachricht.
- Versuch, eine Order zu ändern, die gerade ausgeführt wird.
- Senden einer Nachricht nach dem Verlust der Verbindung zum cTrader-Backend.
Fehler analysieren
Sowohl ProtoErrorRes als auch ProtoOAOrderErrorEvent verfügen über die Felder errorCode und description, die präzise Informationen über die Art des aufgetretenen Fehlers und seine Beschreibung enthalten. Die vollständige Liste aller unterstützten Fehlercodes finden Sie in der ProtoErrorCode-Aufzählung.
Um sicherzustellen, dass Ihre Anwendung in solchen Fällen nicht abstürzt, können Sie in der Regel Callbacks abonnieren, die ausgelöst werden, wenn Sie eine Fehlerantwort erhalten. Die genaue Logik dieser Callbacks sowie die Art und Weise, wie Sie sie abonnieren können, hängen vom Client ab, den Sie zum Herstellen einer Verbindung und zum Abhören des Nachrichtenstroms verwenden.
Arbeiten mit JSON
Bei der Arbeit mit JSON können Sie weiterhin Code aus diesem Tutorial wiederverwenden. Sie müssen ihn jedoch je nach Ihrem Ansatz für die Serialisierung und Deserialisierung sowie Ihrem bevorzugten TCP- und WebSocket-Client leicht anpassen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
Wenn Sie die twisted-Bibliothek zur Handhabung asynchroner Operationen verwenden, müssen Sie jedes Mal, wenn Sie eine neue Nachricht senden, einen Fehler-Callback abonnieren, wie im folgenden Beispiel für ProtoOAVersionReq gezeigt.
1 2 3 4 5 6 7 8 | |
Fehlerbehandlung auf Domain- und Anwendungsebene ¶
Die Art und Weise, wie Sie Fehler auf Domain- und Anwendungsebene behandeln, hängt von Ihrer gewählten Programmiersprache, Ihrem UI-Framework und den von Ihnen implementierten Anwendungsfällen ab, was es schwierig macht, spezifische Code-Snippets und Lösungen bereitzustellen.
Die folgenden Empfehlungen können jedoch unabhängig davon nützlich sein, wie Sie sich für die Integration mit cTrader Open API entscheiden.
- Implementieren Sie immer einen dedizierten Fehlerzustand für wichtige UI-Elemente. Dies verhindert, dass Ihre Anwendung vollständig abstürzt, und ermöglicht den Betrieb in einem teilweise eingeschränkten Zustand.
- Implementieren Sie einen sicheren und zuverlässigen Protokollierungsmechanismus, der Fehler an einem geeigneten Ort (z. B. im lokalen Speicher) aufzeichnet. Bei wiederholten Fehlern sollte die Protokollierung die Identifizierung und Behebung ihrer Ursache vereinfachen.
- Erstellen Sie einen Mechanismus, mit dem Benutzer Sie über Fehler informieren können. Dies kann so einfach sein wie die Bereitstellung Ihrer Kontaktinformationen innerhalb der Anwendung oder so komplex wie das Hinzufügen eines automatischen Feedback-Übermittlungsdienstes, der bei neuen Fehlern ausgelöst wird.
- Stellen Sie sicher, dass alle Ressourcen, die bei Fehlern verwendet werden, ordnungsgemäß bereinigt werden. Während die meisten Sprachen Garbage-Collector-Dienste anbieten, möchten Sie möglicherweise eine benutzerdefinierte Logik zur Ressourcenfreigabe festlegen.