一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python 捕獲代碼中所有異常的方法

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

2020-08-04 00:20David Beazley Python

這篇文章主要介紹了Python 捕獲代碼中所有異常的方法,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下

問題

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

解決方案

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

?
1
2
3
4
5
try:
  ...
except Exception as e:
  ...
  log('Reason:', e)    # Important!

這個將會捕獲除了 SystemExitKeyboardInterruptGeneratorExit 之外的所有異常。 如果你還想捕獲這三個異常,將 Exception 改成 BaseException 即可。

討論

捕獲所有異常通常是由于程序員在某些復雜操作中并不能記住所有可能的異常。 如果你不是很細心的人,這也是編寫不易調試代碼的一個簡單方法。

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

?
1
2
3
4
5
def parse_int(s):
  try:
    n = int(v)
  except Exception:
    print("Couldn't parse")

試著運行這個函數,結果如下:

?
1
2
3
4
5
>>> parse_int('n/a')
Couldn't parse
>>> parse_int('42')
Couldn't parse
>>>

這時候你就會撓頭想:“這咋回事啊?” 假如你像下面這樣重寫這個函數:

?
1
2
3
4
5
6
def parse_int(s):
  try:
    n = int(v)
  except Exception as e:
    print("Couldn't parse")
    print('Reason:', e)

這時候你能獲取如下輸出,指明了有個編程錯誤:

?
1
2
3
4
>>> parse_int('42')
Couldn't parse
Reason: global name 'v' is not defined
>>>

很明顯,你應該盡可能將異常處理器定義的精準一些。 不過,要是你必須捕獲所有異常,確保打印正確的診斷信息或將異常傳播出去,這樣不會丟失掉異常。

以上就是Python 捕獲代碼中所有異常的方法的詳細內容,更多關于Python 捕獲異常的資料請關注服務器之家其它相關文章!

原文鏈接:https://python3-cookbook.readthedocs.io/zh_CN/latest/c14/p07_catching_all_exceptions.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91在线 一区 二区三区 | 福利三区 | 国产-第1页-草草影院 | 日韩综合一区 | 国产区成人精品视频 | 高清色黄毛片一级毛片 | 风间由美一区二区播放合集 | 久久爽狠狠添AV激情五月 | 亚洲激情久久 | 欧美综合国产精品日韩一 | 俄罗斯激情性孕妇孕交大全 | 麻豆网站在线免费观看 | 好男人资源大全免费观看 | 公妇乱淫在线播放免费观看 | jux629三浦理惠子在线播放 | 黄色大片免费网站 | 国产在线播放一区 | 日本高清中文字幕视频在线 | 视频一区国产精戏刘婷30 | 久久青青草原综合伊人 | 桃乃木香奈作品在线观看 | jizzjizzjⅰzz亚洲美女 | 特色特色大片在线 | 亚洲六月丁香六月婷婷蜜芽 | 亚洲国产精品第一区二区三区 | 欧美一区二区三区综合色视频 | 免费一级国产大片 | 四虎国产一区 | 国产日韩欧美综合一区二区三区 | 91私密保健女子养生spa | 18捆绑调教在线高清 | 欧美精品亚洲精品日韩1818 | 火影忍者小南裸羞羞漫画 | 四虎4hu永久免费国产精品 | 日本一区二区三区在线 视频 | 糖心在线观看 | 四虎成人永久地址 | 91免费在线播放 | 亚洲精品中文 | 手机看片日韩1024你懂的首页 | 久久香蕉国产免费天天 |