亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python異常處理總結

系統 1548 0

本文較為詳細的羅列了Python常見的異常處理,供大家參考,具體如下:

1. 拋出異常和自定義異常

Python用異常對象(exception object)表示異常情況,遇到錯誤后,會引發異常。如果異常對象并未被處理或捕捉,程序就會用所謂的回溯(Traceback,一種錯誤信息)終止執行。

①.raise 語句

Python中的raise 關鍵字用于引發一個異常,基本上和C#和Java中的throw關鍵字相同,如下所示:

            
# -- coding: utf-8 --

def ThorwErr():
  raise Exception("拋出一個異常")

# Exception: 拋出一個異常
ThorwErr()


          

raise關鍵字后面是拋出是一個通用的異常類型(Exception),一般來說拋出的異常越詳細越好,Python在exceptions模塊內建了很多的異常類型,通過使用dir函數來查看exceptions中的異常類型,如下:

            
import exceptions

# ['ArithmeticError', 'AssertionError'.....]
print dir(exceptions)


          

傳遞異常

捕捉到了異常,但是又想重新引發它(傳遞異常),可以使用不帶參數的raise語句即可:

            
# -- coding: utf-8 --
class MuffledCalculator:
  muffled = False
  def calc(self,expr):
    try:
      return eval(expr)
    except ZeroDivisionError:
      if self.muffled:
        print 'Division by zero is illegal'
      else:
        raise

          

②.自定義異常類型

Python中也可以自定義自己的特殊類型的異常,只需要要從Exception類繼承(直接或間接)即可:

            
class SomeCustomException(Exception):
  pass

          

2. 捕捉異常

和C#中的try/catch類似,Python中使用try/except關鍵字來捕捉異常,如下:

            
# -- coding: utf-8 --

try:
  print 2/0
except ZeroDivisionError:
  print '除數不能為0'


          

①.捕捉多個異常

在一個except語句只捕捉其后聲明的異常類型,如果可能會拋出的是其他類型的異常就需要再增加一個except語句了,或者也可以指定一個更通用的異常類型比如:Exception,如下:

            
# -- coding: utf-8 --
try:
  print 2/'0'
except ZeroDivisionError:
  print '除數不能為0'
except Exception:
  print '其他類型異常'

          

為了捕獲多個異常,除了聲明多個except語句之外,還可以在一個except語句之后將多個異常作為元組列出來即可:

            
# -- coding: utf-8 --
try:
  print 2/'0'
except (ZeroDivisionError,Exception):
  print '發生了一個異常'

          

②.獲取異常信息

每個異常都會有一些異常信息,一般情況下我們應該把這些異常信息記錄下來:

            
# -- coding: utf-8 --
try:
  print 2/'0'
except (ZeroDivisionError,Exception) as e:
  # unsupported operand type(s) for /: 'int' and 'str'
  print e

          

3. finally子句

finally子句和try子句聯合使用但是和except語句不同,finally不管try子句內部是否有異常發生,都會執行finally子句內的代碼。所有一般情況下,finally自己常常用于關閉文件或者在Socket中。

            
# -- coding: utf-8 --
try:
  print 2/'0'
except (ZeroDivisionError,Exception):
  print '發生了一個異常'
finally:
  print '不管是否發生異常都執行'
          

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 俺来也欧美亚洲a∨在线 | 四虎天堂 | 久久爆操| 特级黄色视频毛片 | 成人免费观看一区二区 | 99re热线精品视频 | 久在草影院 | 又黄又爽又色的免费毛片 | 国产男女猛视频在线观看网站 | 免费女人18毛片a级毛片视频 | 外国一级黄色毛片 | 曰本毛片 | 九九在线视频 | 91精品啪国产在线观看免费牛牛 | 久久精品国产亚洲麻豆小说 | 午夜国产精品色福利视频 | 日韩欧美区| 69毛片| 久久亚洲精品视频 | 欧美理论片大全在线观看 | 波多野结衣一区2区3区 | 国产精品日本一区二区在线看 | 狼人综合伊人 | 9久热久re爱免费精品视频 | 成人免费视频视频在线观看 免费 | 黄色录像欧美 | 亚洲精品乱码中文字幕无线 | 久草青青在线 | 一级日本高清视频免费观看 | 久久国产精品夜色 | 两性影院 | 欧美一区二区三区在线可观看 | 国产高清在线精品一区免费97 | 欧美亚洲国产色综合 | 久久精品国产清自在天天线 | 国产精品亚洲一区二区在线观看 | 午夜影院在线视频 | 国产 欧美 在线 | 日本一片免费观看高清完整 | 麻豆国产精品免费视频 | 牛牛本精品99久久精品 |