网络异常 - NetworkError
所有网络相关的错误通常是可恢复的,网络故障、流量阻塞、服务器不可用这些 通常都是时间相关的,稍后重新请求通常就能解决问题。
DDoS保护异常 - DDoSProtection
当有以下情况之一发生时,就会抛出这个异常:
- 当Cloudflare或Incapsula限流时
- 当交易所限流时
除了默认的错误处理,ccxt库会使用以下关键字搜索交易所的响应内容:
- cloudflare
- incapsula
- overload
- ddos
请求超时异常 - RequestTimeout
当与交易所的连接失败或没有在指定时间内收到交易所响应的完整数据时, 就会抛出RequestTimeout异常。
因此建议采用以下方式处理这一类的异常:
- 对于查询请求,只需要重新尝试调用即可
- 对于
cancelOrder
请求,要求用户进行二次尝试。如果没有进行二次尝试 而是立即调用了fetchOrder, fetchOrders, fetchOpenOrders 或 fetchClosedOrders, 那么可能导致.orders
缓存不同步。二次尝试调用cancelOrder
可能返回 以下结果之一:- 成功完成,表示委托单已经正确地取消了
- 抛出OrderNotFound异常,表示委托单要么已经在上次请求时取消,
要么已经在两次请求的间隔执行(完成或成交)。这是需要调用
fetchOrder
来 正确地更新缓存
- 如果
createOrder
请求抛出RequestTimeout
异常,开发者应当:- 使用fetchOrders, fetchOpenOrders, fetchClosedOrders检查上个请求是否成功下单 并更新orders缓存。
- 如果委托单不是敞口状态,那么开发者需要调用
fetchBalance
检查账户余额 是否变化。注意fetchBlanace依靠orders缓存进行余额推理,因此只能在更新 缓存后进行调用!
交易所不可用异常 - ExchangeNotAvailable
如果在响应中检测到如下任何关键字,ccxt库会抛出ExchangeNotAvailable异常:
- offline
- unavailable
- busy
- retry
- wait
- maintain
- maintenance
- maintenancing
无效Nonce异常 - InvalidNonce
当你使用的Nonce比之前的请求中的nonce还要小的时候,ccxt就会抛出InvalidNoce异常。 在以下情况中会抛出这一类异常:
- 你没有进行请求限流,或者发送太多请求
- 你的API key没有刷新,可能在其他软件或脚本中使用了同样的api key
- 在多个交易所实例中使用相同的api密钥对
- 系统时钟没有同步。