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 { val listaJogos = mutableListOf() 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 }