Captura de uma exceção que seria impressa assim:
Traceback (most recent call last):
File "c:/tmp.py", line 1, in <module>
4 / 0
ZeroDivisionError: integer division or modulo by zero
Quero formatá-lo em:
ZeroDivisonError, tmp.py, 1
python
exception
stack-trace
traceback
Claudiu
fonte
fonte
Respostas:
fonte
sys.exc_info()
foi introduzido para lidar com problemas de segurança de encadeamento na API anterior. Sua saída é específica para o encadeamento atual e o quadro de pilha atual.Forma mais simples que funcionou para mim.
Resultado
fonte
A fonte (Py v2.7.3) para traceback.format_exception () e as funções chamadas / relacionadas ajudam bastante. Embaraçosamente, eu sempre esqueço de ler a fonte . Só o fiz depois de procurar detalhes semelhantes em vão. Uma pergunta simples: "Como recriar a mesma saída do Python para uma exceção, com todos os mesmos detalhes?" Isso levaria qualquer pessoa a 90% do que procurava. Frustrado, eu vim com este exemplo. Espero que ajude os outros. (Com certeza me ajudou! ;-)
Em resposta específica a esta consulta:
fonte
'message' : exc_value.message
para'message' : str(exc_value)
para py3Aqui está um exemplo de mostrar o número da linha de onde a exceção ocorre.
fonte