5
不錯的字符串我想要生成從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"'))
我想避免導入額外的模塊,除了有一個完全爲此目的。
它產生'[ 「AttributeError的: '模塊' 對象沒有屬性 '不存在的' \ n」 個]'不是OP想要的(其中,是文件名,行號,功能/方法的名字嗎?)。 – jfs
事實上,問題是將文件/行號信息添加到'format_exception()'而沒有弄亂'sys.exc_info()','extract_tb'等內部。 – frans