Xử lý lỗi¶
Xử lý lỗi là một phần quan trọng của bất kỳ ứng dụng Open API đáng tin cậy và thân thiện với người dùng nào. Trừ khi bạn bắt và xử lý các lỗi khác nhau, người dùng của bạn có thể gặp phải giao diện người dùng bị lỗi hoặc có thể bị ngăn không thực hiện một số hành động cần thiết hoàn toàn.
Nói chung, các quy trình xử lý lỗi khác nhau có thể được triển khai tùy thuộc vào lớp mà lỗi xảy ra.
- Ở lớp dữ liệu và lớp miền. Trong một số trường hợp, backend của cTrader có thể gửi tin nhắn
ProtoErrorResnhư một phản hồi cho một trong các yêu cầu của bạn. Đối với các hoạt động liên quan đến đơn hàng, giao dịch hoặc vị thế, bạn cũng có thể nhận được tin nhắnProtoOAOrderErrorEvent. - Ở lớp miền và lớp ứng dụng. Người dùng có thể thực hiện các hành động mà bạn chưa tính đến trong mã của mình, dẫn đến việc ứng dụng của bạn hoạt động không như mong đợi.
Các cơ chế xử lý lỗi ở các cấp độ này khác nhau và được mô tả bên dưới.
Xử lý lỗi ở lớp dữ liệu và lớp miền ¶
Bạn có thể nhận được ProtoErrorRes hoặc ProtoOAOrderErrorEvent trong các tình huống sau (lưu ý rằng danh sách này không đầy đủ):
- Cố gắng đặt lệnh cho một ký hiệu mà thị trường đã đóng cửa.
- Gửi một thông điệp không chính xác hoặc không được hỗ trợ.
- Cố gắng chỉnh sửa một lệnh đang được thực hiện.
- Gửi thông điệp sau khi mất kết nối với backend cTrader.
Phân tích lỗi
Cả ProtoErrorRes và ProtoOAOrderErrorEvent đều có các trường errorCode và description chứa thông tin chính xác về loại lỗi đã xảy ra và mô tả của nó. Bạn có thể xem danh sách đầy đủ các mã lỗi được hỗ trợ trong enum ProtoErrorCode.
Để đảm bảo ứng dụng của bạn không bị hỏng trong những trường hợp như vậy, bạn thường có thể đăng ký các callback sẽ kích hoạt khi bạn nhận được phản hồi lỗi. Logic chính xác của các callback này cũng như cách bạn có thể đăng ký chúng phụ thuộc vào client bạn đang sử dụng để thiết lập kết nối và lắng nghe luồng thông điệp.
Làm việc với JSON
Khi làm việc với JSON, bạn vẫn có thể tái sử dụng mã từ hướng dẫn này; tuy nhiên, bạn sẽ cần điều chỉnh nó một chút tùy thuộc vào cách tiếp cận của bạn đối với việc tuần tự hóa và giải tuần tự hóa cũng như client TCP và WebSocket mà bạn ưa thích.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
Khi sử dụng thư viện twisted để xử lý các hoạt động không đồng bộ, bạn phải đăng ký một callback lỗi mỗi khi bạn gửi một thông điệp mới như được hiển thị trong ví dụ dưới đây cho ProtoOAVersionReq.
1 2 3 4 5 6 7 8 | |
Xử lý lỗi ở lớp domain và ứng dụng ¶
Cách bạn xử lý lỗi ở lớp domain và ứng dụng phụ thuộc vào ngôn ngữ lập trình bạn chọn, framework UI và các trường hợp sử dụng bạn triển khai, khiến việc cung cấp các đoạn mã và giải pháp cụ thể trở nên khó khăn.
Tuy nhiên, các khuyến nghị sau đây có thể hữu ích bất kể bạn chọn cách nào để tích hợp với cTrader Open API.
- Luôn triển khai một trạng thái lỗi chuyên dụng cho các phần tử UI chính. Điều này sẽ ngăn ứng dụng của bạn bị hỏng hoàn toàn và cho phép chạy ở trạng thái suy giảm một phần.
- Triển khai một cơ chế ghi log an toàn và đáng tin cậy sẽ ghi lại các lỗi ở một vị trí phù hợp (ví dụ: bộ nhớ cục bộ). Nếu các lỗi lặp lại xảy ra, việc ghi log sẽ giúp đơn giản hóa việc xác định và giải quyết nguyên nhân của chúng.
- Tạo một cơ chế để người dùng thông báo cho bạn về các lỗi. Điều này có thể đơn giản như cung cấp thông tin liên hệ của bạn trong ứng dụng hoặc phức tạp như thêm một dịch vụ gửi phản hồi tự động kích hoạt khi có lỗi mới.
- Đảm bảo rằng bất kỳ tài nguyên nào được sử dụng khi xảy ra lỗi đều được dọn dẹp đúng cách. Trong khi hầu hết các ngôn ngữ cung cấp dịch vụ thu gom rác, bạn có thể muốn chỉ định logic xử lý tài nguyên tùy chỉnh.