Que estruturas existem em Python para lidar com exceções?
sobes.tech IA
Resposta da IA
Em Python, utilizam-se as seguintes construções para lidar com exceções:
-
try...except: A base do tratamento de exceções. O blocotrycontém o código que pode gerar uma exceção. Se uma exceção ocorrer, o blocoexceptcorrespondente é executado.# Exemplos de uso de try...except try: result = 10 / 0 # Tentativa de divisão por zero except ZeroDivisionError: print("Erro: Divisão por zero!") -
except Exception as e: Captura qualquer exceção e atribui ao objetoepara processamento posterior (por exemplo, registo ou exibição de mensagem).# Captura de qualquer exceção try: value = int("abc") except Exception as e: print(f"Ocorreu um erro: {e}") -
Múltiplos blocos
except: Permitem tratar diferentes tipos de exceções de forma distinta.# Tratamento de múltiplos tipos de exceções try: file = open("non_existent_file.txt", "r") content = file.read() file.close() except FileNotFoundError: print("Erro: ficheiro não encontrado!") except IOError: print("Erro de entrada/saída!") -
except (...): Agrupa vários tipos de exceções num único bloco.# Agrupamento de tipos de exceções try: some_operation() except (ValueError, TypeError): print("Erro de valor ou de tipo!") -
try...except...else: O blocoelseé executado se nenhuma exceção ocorrer no blocotry.# Uso de else try: num1 = 10 num2 = 2 result = num1 / num2 except ZeroDivisionError: print("Erro: divisão por zero!") else: print(f"Resultado da divisão: {result}") -
try...except...finally: O blocofinallyé sempre executado, independentemente de ocorrer ou não uma exceção. É usado para liberar recursos (por exemplo, fechar ficheiros).# Uso de finally file = None try: file = open("data.txt", "r") content = file.read() except FileNotFoundError: print("Ficheiro não encontrado.") finally: if file: file.close() print("Ficheiro fechado.") -
raise: Permite lançar explicitamente uma exceção.# Lançamento explícito de exceção def validate_age(age): if age < 0: raise ValueError("A idade não pode ser negativa!") return age try: validate_age(-5) except ValueError as e: print(f"Erro de validação: {e}")