Imprimir uma exceção em Python
-
Imprimir uma exceção usando blocos
try-except-finallyem Python -
Exceção de impressão usando o módulo
tracebackem Python
Em Python, uma exceção é um erro. Existem muitos erros ou exceções em Python, como TypeError, SyntaxError, KeyError, AttributeError, etc. Usamos try-except-finally em Python para lidar com essas exceções porque, sem esses blocos, essas exceções interromperiam a execução do programa. Os blocos try-except-finally em Python podem ser usados para imprimir essas exceções sem interromper a execução do programa.
Imprimir uma exceção usando blocos try-except-finally em Python
Considere o seguinte trecho de código.
dictionary = {
"hello": "world",
}
number = 25
try:
number = number + dictionary["hello"]
print(number)
except Exception as e:
print(repr(e))
Resultado:
TypeError("unsupported operand type(s) for +: 'int' and 'str'",)
No código acima, primeiro inicializamos um dicionário com hello como uma chave apontando para o valor da string world e uma variável number. Então, dentro do bloco try, estamos tentando acessar o valor da string armazenado no dictionary e adicionando-o à variável number.
Esta afirmação é prática e conceitualmente errada porque é impossível adicionar uma string a um inteiro. Portanto, o bloco except captura este erro e imprime o objeto Exception associado a esta exceção no console.
Exceção de impressão usando o módulo traceback em Python
Python tem um módulo embutido, traceback, para imprimir e formatar exceções. E torna mais fácil imprimir toda a exceção no console.
Em Python, você pode levantar exceções manualmente usando a palavra-chave raise. No trecho de código a seguir, usaremos a palavra-chave raise para levantar exceções dentro do bloco try.
import traceback
try:
raise KeyError
except Exception as e:
traceback.print_exc()
Resultado:
Traceback (most recent call last):
File ".\main.py", line 4, in <module>
raise KeyError
KeyError
No código acima, levantamos uma exceção KeyError e usamos a função print_exc() do módulo traceback para imprimir a exceção. Esta função imprime as informações sobre a exceção e é uma abreviação para traceback.print_exception(*sys.exc_info(), limit, file, chain).
Para saber mais sobre a função print_exception(), consulte os documentos oficiais aqui
