Encadeamento e Relançamento de Exceções
Deslize para mostrar o menu
Ao lidar com erros em Python, pode surgir uma situação em que capturar uma exceção leva à necessidade de lançar uma exceção diferente. Nesses casos, é importante preservar o contexto do erro original. O encadeamento de exceções do Python permite fazer isso utilizando a palavra-chave from. Ao encadear exceções explicitamente, você fornece rastreamentos mais detalhados, facilitando a compreensão da sequência de erros que levou à falha.
Suponha que você esteja escrevendo uma função que processa a entrada de um arquivo. Se ocorrer um erro ao ler o arquivo, pode ser interessante lançar uma exceção personalizada que se encaixe melhor na lógica da sua aplicação, mas também manter as informações sobre o erro original. Utilizar raise NewException() from original_exception permite exatamente isso.
O relançamento de exceções é outra técnica relacionada. Às vezes, após capturar uma exceção, pode ser necessário realizar alguma limpeza ou registrar logs e, em seguida, deixar a exceção propagar para níveis superiores. Isso pode ser feito simplesmente utilizando raise sem especificar uma exceção, o que relança a última exceção capturada. Tanto o encadeamento quanto o relançamento de exceções são valiosos para escrever códigos robustos e fáceis de depurar.
12345678910111213141516# Simple exception chaining and re-raising example def divide(a, b): try: return a / b except ZeroDivisionError as err: # Chain a new exception to the original raise ValueError("Cannot divide by zero") from err try: divide(5, 0) except ValueError as e: print("Caught ValueError:") import traceback traceback.print_exc() print("\nRe-raising the exception...\n") raise
Este código demonstra o encadeamento simples de exceções e o relançamento em Python. A função divide tenta dividir dois números e captura um ZeroDivisionError, encadeando-o a um novo ValueError com uma mensagem clara. O bloco externo try-except captura o ValueError, imprime o rastreamento completo mostrando ambas as exceções e, em seguida, relança a exceção para propagá-la ainda mais.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo