我有一个使用案例,我使用移动互联网(通过运营商),但我超过了我的数据限制。在这种情况下,我的手机看到可用的连接,但我无法打开任何网页。
因此,在这个用例中,我在尝试使用retrofit2和Okhttp进行呼叫时收到了一个SocketException (连接重置)。
在我的代码中,应用程序在"return“行崩溃:
.addInterceptor(Interceptor {
val newRequest = it.request().newBuilder()
.header("Accept", "application/json")
.header("Content-Type", "application/json")
.header("Authorization", "${App.sessionManager.tokenType} ${App.sessionManager.accessToken}")
.build()
return@Interceptor it.proceed(newRequest)
})谁能告诉我如何防止app崩溃?提前谢谢你。
发布于 2018-12-19 20:20:55
问题是Kotlin doesn't force you to catch checked exception -就像SocketException一样-因为没有人捕捉到它,系统就会使你的应用程序崩溃。在Java中,你会被迫去捕捉它。
没有办法阻止异常被抛出-这只是意味着发生了一些意想不到的事情-不抛出它是错误的,所以你应该在代码中的某个点catch它。你应该在哪里抓住它?这个问题没有绝对正确的答案,但只要你能用它做一些有用的事情,比如记录和重新抛出它,或者处理它,允许应用程序的流程继续(例如,向用户显示某种类型的错误并允许他们重试该操作),你就应该抓住它。
https://stackoverflow.com/questions/53830601
复制相似问题