В соответствии с ошибкой, приводящей к сбою приложения - в логике вызовов вы пытаетесь поймать неправильную вещь :) Она должна быть сформирована следующим образом:
try {
val response = api?.generateOTP(otpRequestBody)
withContext(Dispatchers.Main) {
when (response?.code()) { } }
catch (e: IOException) {
} /* there are many exceptions thrown by Retrofit, all are subclasses of IOException */
Так как это не response?.code()
, это выбрасываетисключение, но api?.generateOTP(otpRequestBody)
.
Что касается самого тайм-аута - у вас может быть неправильный URL, слабое подключение к Интернету, вам нужно будет предоставить нам больше информации, чтобы выяснить причину :)
Или вы можете попробовать CoroutineExceptionHandler
:
val exceptionHandler = CoroutineExceptionHandler{_ , throwable->
throwable.printStackTrace()
}
//when you make request:
scope.launch(Dispatchers.IO + exceptionHandler ){
}