2
respostas

[Dúvida] Uso do try e except

Olá, os exercícios estão sendo bem legais e desafiadores. Porém, não consegui entender direito o conceito do try e except e não consegui desenrolar e bem os dois exercícios da Aula 3 aonde pedem para que possamos utilizar o try e except. Alguém poderia me ajudar exemplificando de uma maneira mais clara? Este conceito ainda tá bem confuso na minha mente ;-;

2 respostas

Opa Fala Lucas, posso dar um exemplo que eu estou fazendo aqui?

vou tentar simplificar o maximo possivel o uso do TRY CACTH.

public Optional<Produto> buscarProdutoEstoque(Long produtoId) {
        var jpql = "SELECT p FROM Produto p JOIN FETCH p.estoque WHERE p.id =: produtoId";
        Produto produto;
        try {
            produto = entityManager.createQuery(jpql, Produto.class)
                    .setParameter("produtoId", produtoId)
                    .getSingleResult();
        } catch (NoResultException ex) {
            produto = null;
        }
        return produto == null ? Optional.empty() : Optional.of(produto);
    }

Esse metodo meu, ele está fazendo uma pesquisa no meu banco de dados, procurando um produto por id que estou passando por parametro, e observe o código dentro do try é esse.

try {
            produto = entityManager.createQuery(jpql, Produto.class)
                    .setParameter("produtoId", produtoId)
                    .getSingleResult();

aqui no TRY se eu passar um id que tenha cadastrado o produto no banco ele vai retornar o produto sem problemas nenhum, o meu catch é quando esse resultado não acontece, por exemplo, passar um id que nao tenha um produto cadastrado no banco com esse id, então ela vai retorna um produo vazio, ou seja vai cair no catch.

} catch (NoResultException ex) {
            produto = null;
        }

ai quando cair no catch, caiu no catch pq deu um erro NoResultException entao o uso do try catch é que no try digamos que seje o nosso caminho feliz sem erro nenhum, o catch é pra capturar alguma exceção lançada, isso pode ter sido ocorrido por algum problema que aconteceu.

Então, neste caso o catch seria um sinalizador de erros e ele teria a função de evitar algum bug no seu programa?