編輯:在閱讀評論和答案後,我意識到我想做的事情沒有多大意義。我腦子裏想的是,我 在我的代碼一些地方可能會失敗(通常是一些
requests
通話可能不走,雖然),我想追上他們,而不是 把一個try:
無處不在。我的具體問題是,我會 不在乎,如果他們失敗,並不會影響其他代碼 (說,看門狗的呼叫)。如何捕獲所有未捕獲的異常並繼續?我將離開這個問題供後人的頌歌「想想 真正的問題,再提問」
我試圖處理所有未捕獲的(否則未處理的)異常:
import traceback
import sys
def handle_exception(*exc_info):
print("--------------")
print(traceback.format_exception(*exc_info))
print("--------------")
sys.excepthook = handle_exception
raise ValueError("something bad happened, but we got that covered")
print("still there")
此輸出
--------------
['Traceback (most recent call last):\n', ' File "C:/Users/yop/.PyCharm50/config/scratches/scratch_40", line 10, in <module>\n raise ValueError("something bad happened, but we got that covered")\n', 'ValueError: something bad happened, but we got that covered\n']
--------------
所以,雖然加薪確實抓住了,它沒有按照我的想法工作:致電handle_exception
,然後用print("still there")
繼續。
我該怎麼做?
你不能,這不是一個明智的做法 - 如果有什麼不好的事情意味着你的變量沒有設置?你應該運行下一行,現在是'NameError's? – Eric
你想要做一些像https://github.com/ajalt/fuckitpy – jonrsharpe
@jonrsharpe:經過一些實際的思考 - 是的,我想是的。我會用那個想法更新我的問題。 – WoJ