如果我不能預先知道引發了什麼類型的異常,我該如何測試一個函數是否返回了異常對象?如何用`if`語句測試異常對象?
def func():
try:
bad_thing_happens # NameError("global name 'bad_thing_happens' is not defined",)
return True
except Exception as e:
return e
result = func()
if result == Exception:
print 'a bad thing happened'
在這種情況下,if語句返回False
,我會錯過異常?
只是讓異常傳播到函數之外,然後在其他地方捕獲它。你不需要趕上它,然後返回它,例外情況是一個例外的情況,而不是一個正常的回報。 – pvg
另外,至少有10倍的10次,捕捉'Exception'是一個壞主意。如果你不知道異常的類型,你很少會真正知道如何正確處理它......有時候你可以做的最好的事情就是讓你的程序崩潰,查看堆棧跟蹤來找出爲什麼它死亡並修復該錯誤/邏輯,以便它不會在下一次死亡。 – mgilson
謝謝大家的好評,例外情況變得更加清晰:) – derrend