1
resposta

[Sugestão] Tratamento das exceções não funciona como o mostrado - Solução

Como não foi possível responder ao questionamento feito pelos colegas estudantes no tópico sobre este assunto, estou criando este para informar uma possível solução.

A aplicação funciona para os dois casos (Id existente ou não), sem parar por causa da exceção que ocorre quando se digita um Id inexistente. na aplicação apresentada no treinamento.

Provavelmente, durante a gravação do treinamento, a execução do método gson.fromJson (json, infoJogo::class.java), não gerava exceção quando o Id informado (174 no treinamento) não era encontrado.

Portanto, para a aplicação funcionar sem dar exceção, a linha que declara e atribui valor para a variável meuInfoJogo tem que ter tratamento de exceção.

Fiz as seguintes alterações:

Arquivo Main.kt

   // Código omitido 
   
    var meuInfoJogo:InfoJogo? = null

    val resultadoIJ = runCatching {
        meuInfoJogo =  gson.fromJson(
            json,
            InfoJogo::class.java
        )
    }
    resultadoIJ.onFailure{
        println("Id informado inexistente. Tente outro id.")
        System.exit(1)
    }
    
    var meuJogo:Jogo? = null

    val resultado = runCatching {
        meuJogo = Jogo(
            meuInfoJogo!!.info.title,
            meuInfoJogo!!.info.thumb
        )
    }
    
    // Código omitido

Arquivo Jogo.kt

data class Jogo(
    val titulo:String?,
    val capa:String?
)

// Código omitido

Quem tiver mais experiência e puder melhorar o código acima ou passar uma correção melhor, por favor, deixe sugestão logo abaixo.

Espero ter ajudado, bons estudos!

1 resposta

Oi Audalio, tudo bem?

Agradeço por compartilhar a sua solução alternativa para o tratamento de exceções no código. Realmente, o seu código adiciona uma camada extra de tratamento de exceções que pode ser útil em muitos cenários.

Com certeza vai ajudar outras pessoas.

Um abraço e bons estudos.