我的 unban
命令有时会抛出contextexception,当您取消对未被禁止的人的绑定时。我想用一只手抓住它 try catch
阻止以通知用户他们尝试取消绑定的人未被禁止。这就是我所尝试的:
try {
event.getGuild().unban(event.getMessage().getContentRaw().substring(8)).queue();
} catch(ContextException e) {
event.getChannel().sendMessage("This user isn't banned!").queue();
return;
}
但是 catch()
台词只是说 Exception 'net.dv8tion.jda.api.exceptions.ContextException' is never thrown in the corresponding try block
.
2条答案
按热度按时间ijxebb2r1#
你的例外,在这种情况下甚至不是
ContextException
但是一个错误React例外。自queue(...)
如果在不同的线程中执行异步操作,则不能从此处抛出异常。相反,您应该使用文档中描述的失败回调。您可以使用errorhandler来处理特定的错误响应。
例子:
这个
ContextException
只是告诉你错误是从哪里来的。因为实际的异常发生在其他线程上,因此没有上下文来查找问题。eivgtgni2#
contextexception处理异步异常。所以try块无法捕获异常。
你可以这样修改你的代码。