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
相关产品推荐
相关产品推荐

