我正在使用Zendesk Java 客户端。当我提供正确的凭据时,它会按预期工作。但是,我偶然发现了一个场景,如果传入了错误的凭据,线程就会挂起并引发错误。无论我在有或没有调试器的情况下运行代码,代码都会保持运行状态。它不会退出或将控制返回给调试器。这是图书馆的问题,还是我误解了 AsyncHttpClient 的工作原理?我的代码如下:fun zdtestWrongCredentials() { val client = asyncHttpClient( config() .setRequestTimeout(5000) .setReadTimeout(5000) .setShutdownTimeout(3000) .setPooledConnectionIdleTimeout(5000) .setKeepAlive(false) ) var zd = Zendesk.Builder("https://website.zendesk.com") .setClient(client) .setUsername("john.doe@website.com") .setPassword("abcd") .build() var ticket = Ticket(123, "a", Comment("abc")) // The code hangs here. It's unclear why it exhibits this behavior. var test = zd.createTicket(ticket) // The code does not reach this line. client.close() return}虽然我使用的是 Kotlin,但我尝试在一个简单的 Java 项目中复制这个问题,但问题仍然存在。堆栈跟踪如下。底部有一个异常,但即使在这个异常之后,程序也不会退出/将控制权交还给调试器。
1 回答
达令说
TA贡献1821条经验 获得超6个赞
根据异步客户端的实现方式,它可以在一个线程/协程中抛出错误,然后等待完成消息或在其代码的另一部分触发。
因为错误被抛出,触发器永远不会被发送,因此线程永远挂起。
我曾经“构建”过这样的问题,所以是的,这是可能的。
显然,我不知道这是否真的是手头的问题。
干杯,一切顺利!
添加回答
举报
0/150
提交
取消