2017-01-11 7 views
1

Я вызываю асинхронный вызов, используя «Дооснащение» внутри вызова Anko doAsync. Проблема в том, что я не знаю, как поймать IOException, которое правильно набрасывает execute(), в основном вызов вызова не вызван. Если я прокомментирую строку if (resultBody is T) и положил вызов внутри trycatch, он работает как шарм. Кто-нибудь знает почему?Ошибка при обходе исключения в асинхронном вызове Anko (Kotlin)

doAsync { 

    val response = call.execute() 

    uiThread { 

     if (response.isSuccessful) { 

      val resultBody = response.body() 

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

ответ

0

От doAsync документы:

  • @param ExceptionHandler необязательный обработчик исключений. * Если определено , любые исключения, брошенные внутри [задачи], будут переданы ему. Если нет, исключения будут проигнорированы.

Похоже, вы можете передать exceptionHandler управлять ими или он будет обрабатывать исключения с их crashLogger:

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

//... 

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

Вы можете проверить Anko doAsync implementation для деталей.