异常类的体系
ccxt中所有的机场都派生自BaseError基类,其定义如下:
JavaScript:
class BaseError extends Error {
constructor () {
super ()
// a workaround to make `instanceof BaseError` work in ES5
this.constructor = BaseError
this.__proto__ = BaseError.prototype
}
}
Python:
class BaseError (Exception):
pass
PHP:
class BaseError extends \Exception {}
下面是ccxt异常类的继承体系:
+ BaseError
|
+---+ ExchangeError
| |
| +---+ AuthenticationError
| | |
| | +---+ PermissionDenied
| | |
| | +---+ AccountSuspended
| |
| +---+ ArgumentsRequired
| |
| +---+ BadRequest
| |
| +---+ BadResponse
| | |
| | +---+ NullResponse
| |
| +---+ InsufficientFunds
| |
| +---+ InvalidAddress
| | |
| | +---+ AddressPending
| |
| +---+ InvalidOrder
| | |
| | +---+ OrderNotFound
| | |
| | +---+ OrderNotCached
| | |
| | +---+ CancelPending
| | |
| | +---+ OrderImmediatelyFillable
| | |
| | +---+ OrderNotFillable
| | |
| | +---+ DuplicateOrderId
| |
| +---+ NotSupported
|
+---+ NetworkError (recoverable)
|
+---+ DDoSProtection
|
+---+ ExchangeNotAvailable
|
+---+ InvalidNonce
|
+---+ RequestTimeout
BaseError
类是各种错误的一般性描述,包括可用性错误、请求/响应错误等。
开发者至少应该捕捉这个异常,如果不需要区分具体是什么错误的话。
在错误体系中有两个子树,都派生自BaseError:
- NetworkError
- ExchangeError
NetworkError
表示不严重的错误,某种意义上说并不是真正的错误,更可能是
临时性的不可用情况,可能原因包括交易所维护、DDoS保护和临时性访问阻断。
相比之下,ExchangeError
是严重的错误 – 如果捕捉到这个错误,那么你使用
相同的输入应该都会得到同样的错误。
这两族错误的区别在于NetworkError
是可恢复的,而ExchangeError
是不可恢复的。