欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 捕獲代碼中所有異常的方法

 更新時(shí)間:2020年08月03日 16:44:50   作者:David Beazley  
這篇文章主要介紹了Python 捕獲代碼中所有異常的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

問(wèn)題

怎樣捕獲代碼中的所有異常?

解決方案

想要捕獲所有的異常,可以直接捕獲 Exception 即可:

try:
  ...
except Exception as e:
  ...
  log('Reason:', e)    # Important!

這個(gè)將會(huì)捕獲除了 SystemExit 、 KeyboardInterruptGeneratorExit 之外的所有異常。 如果你還想捕獲這三個(gè)異常,將 Exception 改成 BaseException 即可。

討論

捕獲所有異常通常是由于程序員在某些復(fù)雜操作中并不能記住所有可能的異常。 如果你不是很細(xì)心的人,這也是編寫不易調(diào)試代碼的一個(gè)簡(jiǎn)單方法。

正因如此,如果你選擇捕獲所有異常,那么在某個(gè)地方(比如日志文件、打印異常到屏幕)打印確切原因就比較重要了。 如果你沒有這樣做,有時(shí)候你看到異常打印時(shí)可能摸不著頭腦,就像下面這樣:

def parse_int(s):
  try:
    n = int(v)
  except Exception:
    print("Couldn't parse")

試著運(yùn)行這個(gè)函數(shù),結(jié)果如下:

>>> parse_int('n/a')
Couldn't parse
>>> parse_int('42')
Couldn't parse
>>>

這時(shí)候你就會(huì)撓頭想:“這咋回事???” 假如你像下面這樣重寫這個(gè)函數(shù):

def parse_int(s):
  try:
    n = int(v)
  except Exception as e:
    print("Couldn't parse")
    print('Reason:', e)

這時(shí)候你能獲取如下輸出,指明了有個(gè)編程錯(cuò)誤:

>>> parse_int('42')
Couldn't parse
Reason: global name 'v' is not defined
>>>

很明顯,你應(yīng)該盡可能將異常處理器定義的精準(zhǔn)一些。 不過(guò),要是你必須捕獲所有異常,確保打印正確的診斷信息或?qū)惓鞑コ鋈?,這樣不會(huì)丟失掉異常。

以上就是Python 捕獲代碼中所有異常的方法的詳細(xì)內(nèi)容,更多關(guān)于Python 捕獲異常的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論