Python異常處理總結

來源:互聯網
上載者:User
本文較為詳細的羅列了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/0except 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 '不管是否發生異常都執行'
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.