Junior
Quais são as características do tratamento de exceções em Python?
sobes.tech IA
Resposta da IA
As exceções em Python são eventos que interrompem o fluxo normal de execução do programa. São objetos que representam erros.
Características:
- Hierarquia de exceções: Todas as exceções integradas são classes e estão organizadas numa hierarquia baseada na herança da classe base
BaseException.# Exemplo de hierarquia # BaseException -> Exception -> StandardError -> ... # Exception -> ArithmeticError -> ZeroDivisionError - Blocos
try...except...: Mecanismo principal de tratamento de exceções.try: # Código que pode gerar uma exceção result = 10 / 0 except ZeroDivisionError: # Tratamento de uma exceção específica print("Divisão por zero!") except Exception as e: # Tratamento de outras exceções print(f"Ocorreu um erro: {e}") - Múltiplos blocos
except: Permitem tratar diferentes tipos de exceções de forma distinta.try: # Código value = int("abc") except ValueError: print("Formato de número inválido.") except TypeError: print("Tipo de dado inválido.") - Bloco
else: Executa-se se o blocotryterminar sem exceções.try: # Código result = 10 / 2 except ZeroDivisionError: print("Divisão por zero!") else: print("Operação bem-sucedida.") - Bloco
finally: Executa-se sempre, independentemente de ter ocorrido uma exceção ou não. É usado para libertar recursos.file = None try: file = open("myfile.txt", "r") # Leitura do arquivo except FileNotFoundError: print("Ficheiro não encontrado.") finally: if file: file.close() # Fecho garantido do ficheiro - Operador
raise: Usado para lançar explicitamente uma exceção.def divide(a, b): if b == 0: raise ZeroDivisionError("Não é possível dividir por zero") return a / b try: divide(10, 0) except ZeroDivisionError as e: print(f"Erro: {e}") - Exceções personalizadas: Pode criar classes de exceção próprias herdando de
Exceptionou de outra classe de exceção existente.class CustomError(Exception): pass def process_data(data): if not data: raise CustomError("Dados vazios") try: process_data([]) except CustomError as e: print(f"Erro: {e}") - Tratamento de exceções usando o gestor de contexto
with: Simplifica o trabalho com recursos que requerem fecho explícito (como ficheiros).try: with open("myfile.txt", "r") as file: # Trabalhar com o ficheiro content = file.read() except FileNotFoundError: print("Ficheiro não encontrado.") # O ficheiro fecha-se automaticamente ao sair do bloco 'with' - Encadeamento de exceções: Ao tratar uma exceção, pode guardar informações sobre a exceção anterior (implicitamente ou usando
raise Exception from another_exception).
Estas características proporcionam um mecanismo flexível e poderoso para lidar com erros em Python, permitindo criar programas mais robustos e resistentes a falhas.