2011-11-29 45 views
0

在我看來,那通常你可能需要一個Python程序打印(通常是標準錯誤)僅堆棧跟蹤的最後一行,例如:與堆棧跟蹤的只有最後一行引發錯誤

IOError: Error reading file 'b'plunk'': b'failed to load external entity "plunk"' 

我有這個解決方案:

def print_error(ex:Exception, file) -> None: 
    print('{0}: {1}'.format(ex.__class__.__name__, ex), file=file) 

用法示例:

try: 
    crash in some manner 
except Exception as ex: 
    print_error(ex, sys.stderr) 

沒有什麼特別不妥這個,但這個功能似乎很基礎,我不禁想知道是否沒有更簡單的方法來做到這一點。我錯過了什麼嗎?或者這是一個很好的解決方案?

+1

很高興看到使用功能註釋的人。我只是希望你不是用一些裝飾器靜態檢查你的代碼。 – JBernardo

+0

@JBernardo我喜歡註釋;我認爲他們正是Python所需要的 - 由於預期的類型而對代碼進行了澄清,而不需要辭職鴨子打字。不,不做任何類型的靜態檢查! –

回答

2

我不知道是否有更好的方法,但考慮到它全部是6行代碼,我無法想象它需要很長時間才能完成,我不認爲你需要一個更好的。