Manejo de errores¶
El manejo de errores es una parte crucial de cualquier aplicación Open API confiable y fácil de usar. A menos que capture y procese varios errores, sus usuarios pueden experimentar una interfaz de usuario defectuosa o pueden verse impedidos de realizar ciertas acciones esenciales por completo.
En términos generales, se pueden implementar diferentes procesos de manejo de errores según la capa donde ocurra un error.
- En la capa de datos y dominio. En algunos casos, el backend de cTrader puede enviar el mensaje
ProtoErrorRescomo respuesta a una de sus solicitudes. Para operaciones relacionadas con órdenes, transacciones o posiciones, también puede recibir el mensajeProtoOAOrderErrorEvent. - En la capa de dominio y aplicación. Los usuarios pueden realizar acciones que no ha tenido en cuenta en su código, lo que resulta en que su aplicación se comporte de manera inesperada.
Los mecanismos para manejar errores en estos niveles difieren y se describen a continuación.
Manejo de errores en la capa de datos y dominio ¶
Puede recibir ProtoErrorRes o ProtoOAOrderErrorEvent en las siguientes situaciones (tenga en cuenta que la lista no es exhaustiva):
- Intentar colocar una orden para un símbolo cuyo mercado está cerrado.
- Enviar un mensaje incorrecto o no compatible.
- Intentar modificar una orden que se está ejecutando.
- Enviar un mensaje después de perder su conexión con el backend de cTrader.
Analizar errores
Tanto ProtoErrorRes como ProtoOAOrderErrorEvent tienen los campos errorCode y description que contienen información precisa sobre el tipo de error que ha ocurrido y su descripción. Puede ver la lista completa de todos los códigos de error admitidos en el enum ProtoErrorCode.
Para asegurarse de que su aplicación no se rompa en tales casos, generalmente puede suscribirse a devoluciones de llamada que se activan cuando recibe una respuesta de error. La lógica exacta de estas devoluciones de llamada, así como la forma en que puede suscribirse a ellas, dependen del cliente que esté utilizando para establecer una conexión y escuchar el flujo de mensajes.
Trabajar con JSON
Cuando trabaje con JSON, aún puede reutilizar código de este tutorial; sin embargo, necesitaría modificarlo ligeramente según su enfoque de serialización y deserialización y su cliente TCP y WebSocket preferido.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
Al usar la biblioteca twisted para gestionar operaciones asíncronas, debe suscribirse a una devolución de llamada de error cada vez que envíe un nuevo mensaje, como se muestra en el ejemplo siguiente para ProtoOAVersionReq.
1 2 3 4 5 6 7 8 | |
Gestión de errores en la capa de dominio y aplicación ¶
La forma de gestionar los errores en las capas de dominio y aplicación depende del lenguaje de programación elegido, el marco de interfaz de usuario y los casos de uso que implemente, lo que dificulta proporcionar fragmentos de código y soluciones específicas.
Sin embargo, las siguientes recomendaciones pueden resultar útiles independientemente de cómo elija integrarse con cTrader Open API.
- Implemente siempre un estado de error dedicado para los elementos principales de la interfaz de usuario. Esto evitará que su aplicación se rompa por completo y permitirá que funcione en un estado semi-degradado.
- Implemente un mecanismo de registro seguro y confiable que registre los errores en una ubicación adecuada (por ejemplo, almacenamiento local). Si se producen errores repetidos, el registro debería simplificar la identificación y resolución de su causa.
- Cree un mecanismo para que los usuarios le informen de los errores. Puede ser tan simple como proporcionar su información de contacto dentro de la aplicación o tan complejo como agregar un servicio automático de envío de comentarios que se active cuando haya nuevos errores.
- Asegúrese de que los recursos utilizados cuando se producen errores se limpien correctamente. Si bien la mayoría de los lenguajes ofrecen servicios de recolección de basura, es posible que desee especificar una lógica personalizada de eliminación de recursos.