You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.py默认隐藏哪些错误?1.7.3版本为何未吞掉ValueError

discord.py 1.7.3未配置logging仍输出错误的原因及吞错范围解析

为什么1.7.3未配置logging仍能输出错误?

在discord.py 1.7.x版本中,事件回调(比如on_ready)的异常处理逻辑并没有完全依赖logging模块:
当事件回调抛出异常时,框架的_run_event方法捕获异常后,会先判断对应的日志器是否有有效的输出处理器。如果用户未配置logging,框架会降级使用traceback.print_exc()直接将异常回溯打印到控制台,而非完全隐藏。

你测试的on_ready事件属于核心事件回调,触发的异常会走这个降级逻辑,所以能看到ValueError的输出。

1.7.3版本会吞掉哪些错误?

官方文档提到的"隐藏错误"主要针对以下几类场景:

  • 库内部的警告信息:比如未正确配置intents、API调用的非致命警告、弃用提示等,这些信息默认不会输出,必须配置logging才能捕获。
  • 后台异步任务的异常:通过client.loop.create_task启动的独立异步任务,如果抛出异常且未自行捕获,框架不会主动输出任何错误信息,这类异常只能通过配置logging才能被记录。
  • 网关连接的非致命错误:比如短暂的重连尝试、心跳超时警告、连接中断的非致命提示等,默认不会显示,需要logging才能查看。
  • 命令框架的部分错误:使用discord.ext.commands.Bot时,命令执行的参数解析错误、权限不足提示、未处理的命令异常等,若未配置logging或自定义错误处理,部分信息会被吞掉。

版本差异对比

1.7.3版本未配置logging的输出

Traceback (most recent call last):
  File ".../discord/client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "main.py", line 8, in on_ready
    raise ValueError
ValueError

2.0版本默认配置logging的输出

[2022-07-15 12:28:40] [INFO    ] discord.client: logging in using static token
[2022-07-15 12:28:41] [INFO    ] discord.gateway: Shard ID None has sent the IDENTIFY payload.
[2022-07-15 12:28:41] [INFO    ] discord.gateway: Shard ID None has connected to Gateway (Session ID: ...).
[2022-07-15 12:28:43] [ERROR   ] discord.client: Ignoring exception in on_ready
# ^-----------------^ 这些行来自logging模块
Traceback (most recent call last):
  File "C:\Users\TheFu\PycharmProjects\mcve2.0\venv\lib\site-packages\discord\client.py", line 456, in _run_event
    await coro(*args, **kwargs)
  File "C:\Users\TheFu\PycharmProjects\mcve2.0\main.py", line 8, in on_ready
    raise ValueError
ValueError

内容的提问来源于stack exchange,提问作者TheFungusAmongUs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:48:06