Imprimir uma exceção em Python
-
Imprimir uma exceção usando blocos
try-except-finally
em Python -
Exceção de impressão usando o módulo
traceback
em 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