Bom dia a todos
Eu estava tentado uma abordagem de pegar a exception específica, e utilizei o when
val (message,orders) = try {
ordersOpenAi.messagesAndOrder(text)
} catch (e: Exception){
when(e){
is TimeoutException, is AuthenticationException -> Pair("Erro de conexão", emptyList<Order>())
else -> throw e
}
}
Para forçar o erro, desliguei a conexão de internet no emulador. E com isso, no logcat aparecia a Exceção de TimeoutException:
InputConnectionWrapper.waitForInputConnectionFutureInternal():1486 Failed to get the input connection call's result.
java.util.concurrent.TimeoutException: Waited 100 milliseconds (plus 2 milliseconds, 101100 nanoseconds delay) for ott@861ab61[status=PENDING, info=[task=[running=[NOT STARTED YET], jek@1d3b686]]]
at oqk.get(PG:50)
Mas esse when não estava funcionando e gerava a exceção, então eu fiz o log.e no catch:
Log.e("AssistantViewModel", "Exception: $e")
E apresentou esse resultado:
Exception: com.aallam.openai.api.exception.GenericIOException: Unable to resolve host "api.openai.com": No address associated with hostname
Aí apenas quando eu coloquei o GenericIOException é que deu certo:
val (message,orders) = try {
ordersOpenAi.messagesAndOrder(text)
} catch (e: Exception){
Log.e("AssistantViewModel", "Exception: $e")
when(e){
is TimeoutException, is AuthenticationException, is GenericIOException -> Pair("Erro de conexão", emptyList<Order>())
else -> throw e
}
}
A minha dúvida é: porque no logcat apresenta o TimeoutException enquanto o erro lançado é o GenericIOException?
Ps: eu testei outra exceção utilizando uma key inválida, e apareceu no logcat o TimeoutException e erro pego no Log.e foi o AuthenticationException