Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida Sobre Try

Olá tudo bem? Por favor me ajudem. Observando o Projeto final observei as alterações sobre "throw SQL Exception" e achei super legal o tratamento e inclusão com Try-Catch mas na pratica o projeto ficou com a Classe com mais de um Try. Isso pode ser assim? ou ficaria como má pratica? fiquei na dúvida porque um colega me questionou isso ao ver o meu código. Caso não seja um bom caminho qual seria uma alternativa à isso? Vou mostrar um exemplo do codigo em questão:

public List listarComProduto() {

    try {
        Categoria ultima = null;
        List<Categoria> categorias = new ArrayList<>();

        String sql = "SELECT C.ID, C.NOME, P.ID, P.NOME, P.DESCRICAO " + "FROM CATEGORIA C "
                + "INNER JOIN PRODUTO P ON C.ID = P.CATEGORIA_ID";

        try (PreparedStatement pstm = connection.prepareStatement(sql)) {
            pstm.execute();

            try (ResultSet rst = pstm.getResultSet()) {
                while (rst.next()) {
                    if (ultima == null || !ultima.getNome().equals(rst.getString(2))) {
                        Categoria categoria = new Categoria(rst.getInt(1), rst.getString(2));

                        categorias.add(categoria);
                        ultima = categoria;
                    }
                    Produto produto = new Produto(rst.getInt(3), rst.getString(4), rst.getString(5));
                    ultima.adicionar(produto);
                }
            }
            return categorias;
        }
    } catch (SQLException e) {
        throw new RuntimeException(e);
    }
}


Nesse exemplo vemos mais de um Try por exemplo, fiquei confuso. Um abraço.
2 respostas
solução!

Fala Guilherme, tudo bem?

Peço desculpas pela demora em obter retorno.

Em geral, o tratamento de exceções tem como utilidade justamente evitar comportamentos indesejados no código e as exceções são nossos grandes indicativos de o que está dando errado e porquê. Portanto, em alguns momentos pode não ser interessante aninhar try's, uma vez que, quando temos apenas um catch, ele vai tratar exceções em qualquer um dos blocos try, e a gente perde um pouco do controle do que está dando errado.

Ainda assim, existem situações onde é possível utilizar blocos try aninhados, como no exemplo, principalmente durante os estudos! A reflexão, para esses casos ao meu ver deveria ser: Vale a pena utilizar blocos try aninhados e perder parte do controle do código? Pois pode dificultar a depuração do código e portanto sua manutenção. Muitas vezes é melhor ter código um pouco maior, mas que seja legível e de fácil manutenção, do que código esperto, que parece até mágica e tem o funcionamento esperado, porém dificulta a vida de quem programa na hora da manutenção.

É importante lembrar que o código que escrevemos, escrevemos para outras pessoas que programam ler. O computador entende apenas o binário que será gerado a partir do código escrito.

Em caso de dúvidas, estou à disposição.

Um grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓

Obrigadooo Perfeito Mano! :)