Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

funcao getJogos

Uma dúvida, para garantir que o statement seja fechado não era melhor colocar outro try após o create não? Por exemplo, se caso o statement.executeQuery quebre, ele vai pular para a linha de baixo e da um close? Pensei em fazer assim:

fun getJogos(): List<Jogo> {
        val listaJogos = mutableListOf<Jogo>()
        val conexao = Banco.obterConexao()
        if (conexao != null){
            try {
                val statement = conexao.createStatement()
                try {
                    val resultado = statement.executeQuery("SELECT * FROM JOGOS")
                    while(resultado.next()){
                        val id = resultado.getInt("id")
                        val titulo = resultado.getString("titulo")
                        val capa = resultado.getString("capa")
                        val descricao = resultado.getString("descricao")
                        val preco = resultado.getDouble("preco")
                        val jogo = Jogo(titulo, capa, preco, descricao, id)
                        listaJogos.add(jogo)
                    }
                }finally {
                    statement.close()
                }
            }finally {
                conexao.close()
            }
        }
        return listaJogos
    }
1 resposta
solução!

Olá, Marcos! Tudo bem?

O uso de um bloco try-finally é uma boa prática para assegurar que recursos sejam liberados mesmo que ocorra uma exceção. No seu caso, você está utilizando dois blocos try-finally: um para o statement e outro para a conexao, o que é uma abordagem válida.

O que você propôs é exatamente o que deve ser feito para garantir que o statement seja fechado adequadamente, mesmo que o executeQuery lance uma exceção. Ao encapsular o statement em um bloco try-finally, você garante que ele será fechado no finally, independentemente de qualquer erro que ocorra durante a execução da consulta.

Essa abordagem é robusta e ajuda a evitar vazamentos de recursos, que podem ocorrer se o statement ou a conexao não forem fechados corretamente.

Continue assim e bons estudos!