簡體   English   中英

在 Anko 異步調用中捕獲異常時出錯 (Kotlin)

[英]Error catching exception in Anko async call (Kotlin)

我在 Anko doAsync 調用中使用 Retrofit 調用異步調用。 問題是我不知道如何捕獲正確拋出execute()的 IOException ,基本上沒有調用執行調用。 如果我評論if (resultBody is T)行,並將調用放入trycatch它就像一個魅力。 有誰知道為什么?

doAsync {

    val response = call.execute()

    uiThread {

        if (response.isSuccessful) {

            val resultBody = response.body()

            if (resultBody is T)
                callback.onSuccess(resultBody)
        }
    }
}

來自 doAsync 文檔:

  • @param exceptionHandler 可選的異常處理程序。 * 如果定義,任何在 [task] 中拋出的異常都會傳遞給它。 如果沒有,異常將被忽略。

看起來您可以傳遞一個exceptionHandler來管理它們,或者它將使用它們的crashLogger處理異常:

private val crashLogger = { throwable : Throwable -> throwable.printStackTrace() }

//...

fun <T> T.doAsync( //...
    exceptionHandler: ((Throwable) -> Unit)? = crashLogger,
    //... )

您可以查看Anko doAsync 實現以了解詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM