我正在使用Zendesk Java 客戶端。當我提供正確的憑據(jù)時,它會按預期工作。但是,我偶然發(fā)現(xiàn)了一個場景,如果傳入了錯誤的憑據(jù),線程就會掛起并引發(fā)錯誤。無論我在有或沒有調試器的情況下運行代碼,代碼都會保持運行狀態(tài)。它不會退出或將控制返回給調試器。這是圖書館的問題,還是我誤解了 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 項目中復制這個問題,但問題仍然存在。堆棧跟蹤如下。底部有一個異常,但即使在這個異常之后,程序也不會退出/將控制權交還給調試器。
為什么 AsyncHttpClient 在拋出異常后不關閉線程?
慕尼黑5688855
2023-06-14 11:13:22