可以說,我有一個函數:如何讓python函數返回異常追溯或結果?
def ReadFile():
with open("/etc/passwd") as file:
data = file.read()
該功能可能會成功,在這種情況下,需要返回的結果,也可能會失敗,在這種情況下,我想回到例外的回溯其會通過電子郵件發送給我,所以我知道我的程序中出現了一些問題,並且確切地說失敗了。
要做到這一點,我可以這樣做:
import traceback
def ReadFile():
try:
with open("/etc/passwd") as file:
data = file.read()
except IOError:
return traceback.format_exc()
return data
如果它能夠成功地讀取該文件,則返回文件的內容。否則,它會返回異常的回溯。
traceback.format_exc()返回一個字符串。如果ReadFile()應該返回一個列表,或者如果成功則返回一個元組或整數,比事情很簡單 - 當你調用ReadFile()時,如果返回的結果是一個字符串,那麼你知道它失敗了,你可以運行代碼,你的錯誤,如果結果是你期望的類型(int,tuple,list或w/e),那麼你知道它的工作。
如果在我的示例中,ReadFile()應該返回一個字符串,而不是確定ReadFile()成功或失敗會變得困難得多,因爲您需要解析字符串以確定它是否看起來像如追溯或您預期的結果。
有沒有更好的方法來做到這一點?也許某種方式可以追溯返回某些具有與traceback.format_exc()包含的信息相同的信息的對象,以便更容易確定ReadFile()是成功還是失敗?
更好的辦法是讓它拋出並在通話現場捕捉異常。這是例外情況。 –