如何編寫 try/except 塊以捕獲所有 Python 異常?


這雖然是通用經驗法則,即你可以像下面這樣使用程式碼捕獲所有異常,但你最好不要這樣

try:
    #do_something()
except:
    print "Exception Caught!"

不過,這也會捕獲我們可能不想關注的異常,例如 KeyboardInterrupt。我們無法捕獲異常,除非我們立刻重新引發異常

try:
    f = open('file.txt')
    s = f.readline()
    i = int(s.strip())
except IOError as (errno, strerror):
    print "I/O error({0}): {1}".format(errno, strerror)
except ValueError:
    print "Could not convert data to an integer."
except:
    print "Unexpected error:", sys.exc_info()[0]
    raise

如果指令碼中沒有包含 file.txt,我們會得到類似下面的輸出。

I/O error(2): No such file or directory

更新於:2019-09-27

162 次瀏覽

開啟你的 職業

完成課程以獲得認證

開始
廣告