异常体系¶
bt_api_py 使用统一的自定义异常体系,所有异常均继承自 BtApiError。
异常层次结构¶
BtApiError
├── ExchangeNotFoundError # 交易所未注册或未添加
├── ExchangeConnectionError # 连接失败
│ └── AuthenticationError # 认证失败
├── RequestTimeoutError # 请求超时
├── RequestError # 请求失败(非超时)
│ └── RequestFailedError # HTTP 请求失败
├── OrderError # 下单/撤单失败
│ ├── InsufficientBalanceError # 余额不足
│ ├── InvalidOrderError # 订单参数无效
│ └── OrderNotFoundError # 订单不存在
├── SubscribeError # 订阅失败
├── DataParseError # 数据解析失败
├── RateLimitError # 速率限制
├── NetworkError # 网络错误
├── InvalidSymbolError # 无效交易对
├── ConfigurationError # 配置错误
└── WebSocketError # WebSocket 错误
使用示例¶
from bt_api_py.exceptions import (
BtApiError,
ExchangeNotFoundError,
RateLimitError,
RequestTimeoutError,
)
try:
ticker = api.get_tick("UNKNOWN___SPOT", "BTCUSDT")
except ExchangeNotFoundError as e:
print(f"交易所未找到: {e}")
except RateLimitError as e:
print(f"频率限制,{e.retry_after}s 后重试")
except RequestTimeoutError as e:
print(f"请求超时: {e}")
except BtApiError as e:
print(f"其他错误: {e}")
bt_api_py 自定义异常体系 统一各模块的异常处理,替代散乱的 assert / raise Exception / ConnectionError
BtApiError ¶
Bases: Exception
bt_api_py 所有异常的基类
ExchangeNotFoundError ¶
Bases: BtApiError
交易所未注册或未添加
ExchangeConnectionError ¶
AuthenticationError ¶
RequestTimeoutError ¶
Bases: BtApiError
REST / 查询请求超时
RequestError ¶
OrderError ¶
Bases: BtApiError
下单 / 撤单操作失败
SubscribeError ¶
DataParseError ¶
Bases: BtApiError
数据解析失败
RateLimitError ¶
Bases: BtApiError
API 速率限制错误
NetworkError ¶
InvalidSymbolError ¶
Bases: BtApiError
无效的交易对符号
InsufficientBalanceError ¶
InsufficientBalanceError(exchange_name: str, symbol: str = '', required: float | None = None, available: float | None = None)
Bases: OrderError
余额不足
InvalidOrderError ¶
OrderNotFoundError ¶
ConfigurationError ¶
WebSocketError ¶
CurrencyNotFoundError ¶
Bases: BtApiError
Currency not found in exchange account.
QueueNotInitializedError ¶
RequestFailedError ¶
RequestFailedError(exchange_name: str | None = None, url: str = '', detail: str = '', *, venue: str = '', message: str = '', status_code: int | None = None)
Bases: RequestError
通用请求失败错误(用于 HTTP 客户端)
is_network_error ¶
Check if error is network-related (connection, timeout, etc.).
is_rate_limit_error ¶
Check if error is rate-limit-related.
is_order_error ¶
Check if error is order-related (insufficient balance, invalid order, etc.).
is_user_recoverable ¶
Check if error can be recovered by user action (e.g., fix params, retry later).