未连接到Internet时出现致命异常

时间:2016-02-12 15:30:56

标签: android kotlin

我正在尝试学习Kotlinrxjava。我有一个非常简单的应用程序只有一个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无法捕获它所以我不知道该怎么做

1 个答案:

答案 0 :(得分:2)

view observable的订阅者也需要实现onError