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

discord.py如何实现本地未捕获错误时调用全局错误处理器?

实现本地未捕获错误时调用全局错误处理器

可以实现这个需求。只需在本地错误处理器中仅处理特定错误类型,对未处理的错误重新抛出,让全局错误处理器接手即可。

修改后的本地错误处理器代码:

@number.error
async def number_error(ctx, error):
    if isinstance(error, BadArgument):
        await ctx.reply("This is a special answer!")
    else:
        # 重新抛出未处理的错误,交由全局处理器处理
        raise error

工作机制:

  • 当number命令抛出BadArgument错误时,本地处理器会捕获并回复指定内容,不会触发全局处理器。
  • 当命令抛出NotFound错误时,本地处理器无对应处理逻辑,会重新抛出该错误,此时全局on_command_error事件会捕获并执行对应的回复逻辑。

测试场景:

  • 输入!number abc:触发BadArgument,本地处理器回复"This is a special answer!"。
  • 输入!number 123:执行ctx.guild.get_member(1)抛出NotFound,本地处理器重新抛出错误,全局处理器回复"I couldn't find that member!"。

这样就完全符合你的预期:本地处理特定错误,其余错误由全局处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:18:20