Obsługa błędów¶
Obsługa błędów jest kluczowym elementem każdej niezawodnej i przyjaznej dla użytkownika aplikacji Open API. Jeśli nie przechwycisz i nie przetworzysz różnych błędów, Twoi użytkownicy mogą doświadczyć wadliwego interfejsu użytkownika lub mogą być całkowicie uniemożliwieni w wykonywaniu pewnych podstawowych działań.
Ogólnie rzecz biorąc, różne procesy obsługi błędów mogą być implementowane w zależności od warstwy, w której występuje błąd.
- W warstwie danych i domeny. W niektórych przypadkach backend cTradera może wysłać komunikat
ProtoErrorResjako odpowiedź na jedno z Twoich żądań. W przypadku operacji związanych ze zleceniami, transakcjami lub pozycjami możesz również otrzymać komunikatProtoOAOrderErrorEvent. - W warstwie domeny i aplikacji. Użytkownicy mogą wykonywać działania, których nie uwzględniłeś w swoim kodzie, co skutkuje nieoczekiwanym zachowaniem Twojej aplikacji.
Mechanizmy obsługi błędów na tych poziomach różnią się i są opisane poniżej.
Obsługa błędów w warstwie danych i domeny ¶
Możesz otrzymać ProtoErrorRes lub ProtoOAOrderErrorEvent w następujących sytuacjach (należy pamiętać, że lista nie jest wyczerpująca):
- Próba złożenia zlecenia dla symbolu, dla którego rynek jest zamknięty.
- Wysłanie nieprawidłowej lub nieobsługiwanej wiadomości.
- Próba modyfikacji zlecenia, które jest w trakcie realizacji.
- Wysłanie wiadomości po utracie połączenia z backendem cTrader.
Analizuj błędy
Zarówno ProtoErrorRes, jak i ProtoOAOrderErrorEvent mają pola errorCode i description, które zawierają dokładne informacje o typie błędu, który wystąpił, oraz jego opis. Pełną listę wszystkich obsługiwanych kodów błędów można znaleźć w wyliczeniu ProtoErrorCode.
Aby upewnić się, że Twoja aplikacja nie ulegnie awarii w takich przypadkach, zazwyczaj możesz zasubskrybować wywołania zwrotne, które są wyzwalane po otrzymaniu odpowiedzi błędu. Dokładna logika tych wywołań zwrotnych, a także sposób ich subskrypcji zależą od klienta, którego używasz do nawiązania połączenia i nasłuchiwania strumienia wiadomości.
Praca z JSON
Podczas pracy z JSON nadal możesz ponownie wykorzystać kod z tego samouczka; jednak będziesz musiał nieznacznie go zmodyfikować w zależności od podejścia do serializacji i deserializacji oraz preferowanego klienta TCP i WebSocket.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
Podczas korzystania z biblioteki twisted do obsługi operacji asynchronicznych musisz zasubskrybować wywołanie zwrotne błędu za każdym razem, gdy wysyłasz nową wiadomość, jak pokazano w poniższym przykładzie dla ProtoOAVersionReq.
1 2 3 4 5 6 7 8 | |
Obsługa błędów w warstwie domeny i aplikacji ¶
Sposób obsługi błędów w warstwach domeny i aplikacji zależy od wybranego języka programowania, frameworka UI oraz implementowanych przypadków użycia, co utrudnia dostarczenie konkretnych fragmentów kodu i rozwiązań.
Jednak poniższe zalecenia mogą okazać się przydatne niezależnie od tego, w jaki sposób zdecydujesz się zintegrować z cTrader Open API.
- Zawsze implementuj dedykowany stan błędu dla głównych elementów UI. Zapobiegnie to całkowitej awarii aplikacji i umożliwi działanie w stanie częściowo zdegradowanym.
- Zaimplementuj bezpieczny i niezawodny mechanizm logowania, który będzie rejestrował błędy w odpowiedniej lokalizacji (na przykład w pamięci lokalnej). W przypadku powtarzających się błędów logowanie powinno uprościć identyfikację i rozwiązanie ich przyczyny.
- Stwórz mechanizm umożliwiający użytkownikom informowanie Cię o błędach. Może to być tak proste, jak podanie informacji kontaktowych w aplikacji, lub tak skomplikowane, jak dodanie automatycznej usługi przesyłania opinii, która uruchamia się przy nowych błędach.
- Upewnij się, że wszelkie zasoby używane w momencie wystąpienia błędów są odpowiednio czyszczone. Chociaż większość języków oferuje usługi garbage collectora, możesz chcieć określić niestandardową logikę usuwania zasobów.