2
respostas

[Dúvida] Dúvidas sobre o Try Except

Pessoal, estava fazendo os exercícios do módulo 3 - Avaliando listas e iterações e o exercício seguinte: Interpretando listas e erros e fiquei com uma dúvida.

No primeiro exercício foi orientado a colocar o try except dentro do laço for para capturar erros apenas contidos dentro do laço for:

Solução correta: for projeto in projetos: try: print(f"Projeto: {projeto}") except TypeError: print("Projeto não disponível.")

Já no exercício seguinte foi colocado o try except fora do laço:

encomendas = input("Digite os números das encomendas separados por vírgula: ").split(',') try: for encomenda in encomendas: print(int(encomenda)) except ValueError: print("Uma das entradas não é um número válido.")

Eu não consegui chegar em uma conclusão uma diferença para o try dentro e fora do laço.

Podem me ajudar?

2 respostas

Certamente! A diferença fundamental entre colocar o bloco try-except dentro ou fora do laço está relacionada ao escopo das exceções capturadas.

  1. try-except dentro do laço (for projeto in projetos: try: ...):
    • Captura erros específicos que ocorrem durante cada iteração do laço for.
    • Se ocorrer um erro em um dos elementos da lista projetos, apenas esse erro será tratado, permitindo que as iterações subsequentes continuem.
  2. try-except fora do laço (try: for encomenda in encomendas: ... except ValueError: ...):
    • Captura erros que ocorrem durante a execução do laço como um todo.
    • Se ocorrer um erro em qualquer parte do laço, a exceção será tratada e o restante do laço não será executado. Em resumo, o posicionamento do try-except influencia se você deseja tratar exceções para cada iteração individual (dentro do laço) ou se prefere tratar exceções que podem ocorrer ao longo de todo o processo de execução do laço (fora do laço).

Caso tenha conseguido esclarecer suas dúvidas, fico feliz em ter ajudado. Estou à disposição para qualquer outra questão que possa surgir. Um abraço! Se este post foi útil, por favor, marque como solucionado ✓. Desejo a você excelentes estudos!