我正在尝试学习Kotlin
和rxjava
。我有一个非常简单的应用程序只有一个button
,你点击它从网站上获取一些数据。
除非我关闭我的细胞数据,否则一切正常,在这种情况下,我会得到一个致命的例外而没有解释原因。
我的代码:
// In the activity's onCreate
ViewObservable.clicks(button)
.observeOn(Schedulers.io())
.subscribe{
fetchTest().observeOn(AndroidSchedulers.mainThread())
.subscribe{ s:String ->
textView.text = s
}
}
// Elsewhere in the activity code
@Throws(IOException::class)
private fun fetchTest(): Observable<String> {
val url = URL(MY_URL)
val httpConnection = url.openConnection()
var stream = httpConnection.inputStream
val reader = BufferedReader(InputStreamReader(stream))
val response = reader.readLines().reduce { x, y -> x + y }
stream?.close()
return Observable.just(response)
}
当我处于调试模式时,错误发生在此处:
var stream = httpConnection.inputStream
logcat完全没有用处:
02-12 10:13:37.748 8616-8645/com.example.app E/AndroidRuntime﹕ FATAL EXCEPTION: RxCachedThreadScheduler-1
Process: com.example.app, PID: 8616
我知道错误是因为没有网络连接,但添加try / catch无法捕获它所以我不知道该怎么做
答案 0 :(得分:2)
view observable的订阅者也需要实现onError