当前位置: 首页 > 知识库问答 >
问题:

上下文异常:无法捕获未知的禁令(不和谐Java)

方承弼
2023-03-14

我的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。吉达。应用程序编程接口。例外。ContextException’从不在相应的try块中抛出

共有2个答案

禹昊穹
2023-03-14

ContextException处理异步异常。因此,try块无法捕获异常
您可以这样更改代码。

java prettyprint-override">event.getGuild().unban(event.getMessage().getContentRaw().substring(8)).queue(
    null,
    (error) -> {
        if (error.getMessage().equals("10026: Unknown Ban")) {
            event.getChannel().sendMessage("This user isn't banned!").queue();
        }
    }
);
商兴朝
2023-03-14

在这种情况下,您的异常甚至不是ContextExctive,而是错误响应异常。由于队列(...)在不同的线程中执行异步操作,因此不能从这里抛出异常。相反,您应该使用留档所描述的失败回调。

您可以使用ErrorHandler来处理特定的错误响应。

例:

String userId = event.getMessage().getContentRaw().substring(8);
ErrorHandler handler = new ErrorHandler().handle(ErrorResponse.UNKNOWN_BAN, (error) -> {
    event.getChannel().sendMessage("This user isn't banned!").queue();
});

event.getGuild()
     .unban(userId)
     .queue(null, handler);

ContextException仅用于告诉您错误源于代码的何处。因为实际的异常发生在其他线程上,因此没有上下文来查找问题。

 类似资料:
  • 问题内容: 当我调用使用 CXF 构建的特定静态服务方法时,出现以下错误,任何人都知道为什么以及如何解决它? 发生JAXBException:com.octory.ws.dto类。在此上下文中, ProfileDto 或其任何超类都不为人知。 以下是服务方法和相关的DTO: SearchResultDto: ProfileDto: 问题答案: 您的班级未在中引用。尝试添加到中。

  • 所以 我有一个函数,有一个回调,所以我把它包装在一个挂起函数使用,但当它错误了,它是崩溃整个应用程序。 这里有一个概念是正在发生的事情。 2022-03-04 16:09:45.410 19289-19438/in.app.androidE/AndreidRuntime: FATAL EXCEPTION: DefaultDispatcher-Worers-3进程:in.app.android,PI

  • 我通过激发Baeldung在Spring Security页面上的防止暴力身份验证尝试,为我的登录服务实现了暴力阻止机制,如下所示: 当用户未经验证时,LoginService抛出InvalidCredentialException(),然后我试图在AuthenticationFailureListener类中捕获此异常: 当出现错误时,则登录测试服务。将调用loginFailed()方法。然而,

  • 问题内容: 为什么Java中的某些异常未被捕获?这是代码由于没有处理的异常而完全失败。(Java版本1.4)。 我得到一个 但这有效 我懂了 我以为捕获异常会捕获所有异常?如何捕获Java中的所有异常? 问题答案: 因为某些异常不是源自-例如和。 基本上,类型层次结构是: 只能抛出派生类,因此,如果您抓住,那实际上就可以抓住一切。 ,以及任何异常,从获得 其他 比那些源自数作为 检查的异常 -他们

  • 为什么Java中的一些异常不被捕获?这是完全失败的代码,有一个未处理的异常。(Java版本1.4)。 我在线程“main”java中得到了一个 但这行得通 我在java中没有发现任何方法错误。lang.NoSuchMethodError: 我以为捕获异常会捕获所有异常?如何捕获java中的所有异常?

  • 我尝试在Facebook Messager上上传一个图像/文件,其示例URL为https://www.facebook.com/messages/t/471646182511990(如果你想尝试,你需要在Chrome浏览器上打开Facebook Messager并获得有效的URL)。但它失败了,出现了“未知命令”异常。 我搜索但找不到任何合适的答案。一个线程“https://stackoverfl