我想从Exception
生成单行字符串,告诉我发生什么 哪里(不需要完整的回溯) 。以下信息会很好:
str(e)
的内容)目前我执行以下操作:
import os
...
try:
os.nonexisting()
except Exception as e:
t = e.__traceback__
tbf = e.__traceback__.tb_frame
print('%s:%d: %s in %s(): "%s" ' %
os.path.basename(tbf.f_code.co_filename),
t.tb_lineno,
e.__class__.__name__,
tbf.f_code.co_name, e))
给了我:
foo.py:203: AttributeError in foo(): "'module' object has no attribute 'nonexisting'"
是否有更优雅的方式来打印此示例中给出的详细信息?我在考虑s.th.像
print(e.format('%f: %l: %t %F: "%w"'))
我希望避免导入额外的模块,除非有一个完全用于此目的。
答案 0 :(得分:4)
我认为traceback.format_exception_only
完全符合您的要求。
try:
os.nonexisting()
except Exception as e:
print(traceback.format_exception_only(e.__class__, e))