오류 처리¶
오류 처리는 신뢰할 수 있고 사용자 친화적인 Open API 애플리케이션의 중요한 부분입니다. 다양한 오류를 포착하고 처리하지 않으면 사용자가 결함이 있는 UI를 경험하거나 특정 필수 작업을 전혀 수행하지 못할 수 있습니다.
일반적으로 오류가 발생한 계층에 따라 다양한 오류 처리 프로세스가 구현될 수 있습니다.
- 데이터 및 도메인 계층에서. 경우에 따라 cTrader 백엔드가 요청에 대한 응답으로
ProtoErrorRes메시지를 보낼 수 있습니다. 주문, 거래 또는 포지션과 관련된 작업의 경우ProtoOAOrderErrorEvent메시지를 받을 수도 있습니다. - 도메인 및 애플리케이션 계층에서. 사용자가 코드에서 고려하지 않은 작업을 수행할 수 있으며, 이로 인해 애플리케이션이 예기치 않게 동작할 수 있습니다.
이러한 수준에서의 오류 처리 메커니즘은 다르며 아래에 설명되어 있습니다.
데이터 및 도메인 계층에서의 오류 처리 ¶
다음 상황에서 ProtoErrorRes 또는 ProtoOAOrderErrorEvent를 받을 수 있습니다(이 목록이 완전하지는 않음):
- 시장이 닫힌 심벌에 대해 주문을 시도하는 경우.
- 잘못되었거나 지원되지 않는 메시지를 보내는 경우.
- 실행 중인 주문을 수정하려고 시도하는 경우.
- cTrader 백엔드와의 연결이 끊긴 후 메시지를 보내는 경우.
오류 분석
ProtoErrorRes와 ProtoOAOrderErrorEvent 모두 errorCode와 description 필드를 포함하며, 이 필드들은 발생한 오류 유형과 그 설명에 대한 정확한 정보를 담고 있습니다. 지원되는 모든 오류 코드의 전체 목록은 ProtoErrorCode 열거형에서 확인할 수 있습니다.
이러한 경우에 애플리케이션이 중단되지 않도록 하기 위해 일반적으로 오류 응답을 받을 때 트리거되는 콜백을 구독할 수 있습니다. 이러한 콜백의 정확한 로직과 이를 구독하는 방법은 연결을 설정하고 메시지 스트림을 수신하는 데 사용하는 클라이언트에 따라 다릅니다.
JSON 작업
JSON을 사용하여 작업할 때도 이 튜토리얼의 코드를 재사용할 수 있지만, 직렬화 및 역직렬화 접근 방식과 선호하는 TCP 및 WebSocket 클라이언트에 따라 약간 수정해야 할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
비동기 작업을 처리하기 위해 twisted 라이브러리를 사용할 때는 아래 예제와 같이 ProtoOAVersionReq에 대해 새로운 메시지를 보낼 때마다 오류 콜백을 구독해야 합니다.
1 2 3 4 5 6 7 8 | |
도메인 및 애플리케이션 계층에서의 오류 처리 ¶
도메인 및 애플리케이션 계층에서 오류를 처리하는 방식은 선택한 프로그래밍 언어, UI 프레임워크 및 구현하는 사용 사례에 따라 다르기 때문에 특정 코드 스니펫과 솔루션을 제공하기 어렵습니다.
그러나 cTrader Open API와 통합하는 방법에 관계없이 다음과 같은 권장 사항이 유용할 수 있습니다.
- 주요 UI 요소에 대해 전용 오류 상태를 항상 구현하세요. 이렇게 하면 애플리케이션이 완전히 중단되는 것을 방지하고 반쯤 저하된 상태에서 실행할 수 있습니다.
- 적절한 위치(예: 로컬 스토리지)에 오류를 기록하는 안전하고 신뢰할 수 있는 로깅 메커니즘을 구현하세요. 반복적인 오류가 발생할 경우 로깅은 원인을 식별하고 해결하는 데 도움이 됩니다.
- 사용자가 오류를 알릴 수 있는 메커니즘을 만드세요. 이는 애플리케이션 내에 연락처 정보를 제공하는 것부터 새로운 오류가 발생할 때 자동으로 피드백을 제출하는 서비스를 추가하는 것까지 다양할 수 있습니다.
- 오류 발생 시 사용된 모든 리소스가 적절히 정리되도록 하세요. 대부분의 언어는 가비지 컬렉터 서비스를 제공하지만, 사용자 정의 리소스 처리 로직을 지정할 수도 있습니다.