errors
feishu.errors
¶
FeishuError
¶
Bases: Exception
所有飞书异常的基类。
封装飞书 API 返回的错误码、错误信息以及用于排查问题的链路追踪 ID(log_id),
同时保留原始响应体(raw)以便进一步分析。所有具体的异常类型都继承自该类,
因此 except FeishuError 可以捕获本库抛出的全部飞书相关异常。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
int
|
飞书业务错误码,传输层错误固定为 |
必需 |
|
str
|
人类可读的错误信息。 |
必需 |
|
str | None
|
飞书返回的链路追踪 ID,用于向飞书反馈问题时定位日志。 |
None
|
|
Any
|
原始响应体(通常为 |
None
|
飞书文档
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/errors.py
FeishuAuthError
¶
Bases: FeishuError
鉴权失败异常。
当令牌缺失、无效、过期或类型错误时抛出(例如 tenant_access_token 过期,
或 OAuth 授权码已失效)。一般通过刷新或重新获取令牌即可恢复。
飞书文档
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/errors.py
FeishuPermissionError
¶
Bases: FeishuAuthError
权限不足异常。
当应用或用户缺少接口所需的权限范围(scope)时抛出。这属于配置或授权问题
(需在开发者后台为应用申请权限,或引导用户重新授权),与令牌无效或过期不同。
该类继承自 feishu.errors.FeishuAuthError,因此 except FeishuAuthError
也能捕获权限错误。
飞书文档
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/errors.py
FeishuApiError
¶
Bases: FeishuError
通用业务错误异常。
当请求未命中限流、服务器错误或鉴权错误等特定分类,而是返回了普通的业务错误码 (例如参数非法、资源不存在、被拒绝)时抛出。
飞书文档
示例:
源代码位于: feishu/errors.py
| Python | |
|---|---|
FeishuServerError
¶
Bases: FeishuError
飞书服务器错误异常。
对应 HTTP 500/502/503/504。这类错误通常是临时性的,传输层会自动重试; 若重试耗尽仍未恢复,则向调用方抛出该异常。
飞书文档
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/errors.py
FeishuRateLimitError
¶
Bases: FeishuError
触发限流异常。
对应 HTTP 429 或限流错误码。传输层会先按 reset_after(若服务器提供)
自动退避重试;重试耗尽后向调用方抛出该异常。reset_after 表示建议的
重试等待秒数。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
int
|
飞书业务错误码。 |
必需 |
|
str
|
人类可读的错误信息。 |
必需 |
|
str | None
|
飞书返回的链路追踪 ID。 |
None
|
|
Any
|
原始响应体。 |
None
|
|
float | None
|
建议的重试等待秒数,来源于 |
None
|
飞书文档
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/errors.py
FeishuTransportError
¶
Bases: FeishuError
传输层错误异常。
当 HTTP 请求本身失败(连接错误、超时等网络问题)且重试耗尽时抛出。
错误码固定为 -1,底层原始异常保留在 original 属性中以便排查。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
str
|
人类可读的错误信息。 |
必需 |
|
BaseException | None
|
触发该错误的底层异常(通常为 |
None
|
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/errors.py
FeishuSignatureError
¶
Bases: FeishuError
Webhook 签名校验失败异常。
供需要严格的、基于抛异常的签名校验的调用方使用。注意:本库内置的 Starlette
接收器(create_event_route / create_card_route)在签名校验失败时返回
HTTP 401 响应,而不会抛出该异常。
飞书文档
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/errors.py
FeishuCryptoError
¶
Bases: FeishuError
事件解密失败异常。
当 feishu.events.crypto.decrypt 无法解密密文时抛出,例如加密密钥错误、
密文损坏或 PKCS#7 填充非法。
飞书文档
示例:
| Python Console Session | |
|---|---|
源代码位于: feishu/errors.py
error_from_envelope
¶
error_from_envelope(code: int, message: str, *, status: int, log_id: str | None, raw: Any, reset_after: float | None = None, error_description: str | None = None) -> FeishuError
依据 HTTP 状态码与响应体错误码,构造对应的具体异常实例。
分类顺序为:限流(429 或限流码)> 服务器错误(5xx)> 权限不足 > 鉴权失败
(鉴权错误码、401/403,或 OAuth invalid_* 等错误形态)> 通用业务错误。
错误描述优先取 error_description,其次取响应体中的 error_description /
error,最后回退到 message。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
|
int
|
响应体中的业务错误码。 |
必需 |
|
str
|
响应体中的 |
必需 |
|
int
|
HTTP 状态码。 |
必需 |
|
str | None
|
飞书返回的链路追踪 ID。 |
必需 |
|
Any
|
原始响应体。 |
必需 |
|
float | None
|
建议的重试等待秒数(用于限流错误)。 |
None
|
|
str | None
|
OAuth 风格响应中的错误描述,优先作为错误信息。 |
None
|
返回:
| 类型 | 描述 |
|---|---|
FeishuError
|
与状态码、错误码相匹配的 feishu.errors.FeishuError 子类实例。 |
示例: