【发布时间】:2018-03-05 22:11:12
【问题描述】:
我是 Kotlin 的新手,我有这个带有自定义异常处理程序的 doAsync:
doAsync(exceptionHander = {e -> handleException(e)}){
//rest call
}
private val handleException= {throwable : Throwable ->
if(throwable is HttpClientErrorException){
val response = JSONObject(throwable.responseBodyAsString)
Toast.makeText(this, response["message"].toString(), Toast.LENGTH_LONG).show()
}
}
但是,Toast 从未显示。如何在 Toast 上显示此异常消息?异常处理程序是否在 ui 线程上调用?
更新:
我是这样测试的:
doAsync(exceptionHander = {e -> handleException(e)}){
throw HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, "An error has occurred")
}
使用相同的错误处理程序,但 toast 不会显示。
【问题讨论】:
-
也许这是一个愚蠢的问题,但你确定你的例外是
HttpClientErrorException吗? -
是的,即使没有 if 吐司也不会显示。
-
您在 LogCat 中是否有任何异常? exceptionHandler 在哪里运行,在主线程中还是在后台线程中?
-
是的,我在 LogCat 中遇到了异常。我不确定异常处理程序是否在主线程或背景线程中运行。这是问题的一部分????
-
我没有笔记本电脑,我会尽快更新问题。