【Python】異常

簡介

異常是指當程序語法正確,但運行的時候依舊發生的錯誤咱們稱之爲異常。
異常通常不會被程序處理,都已錯誤信息的形式表現出來。html

異常處理

try/except

try:
    # 程序正常執行的代碼
    a = os.listdir()
except:
    # 發生異常時執行的代碼
    print('發生異常')
發生異常

執行步驟:python

  1. 首先執行try和except之間的語句
  2. 沒有發生異常,忽略except子句
  3. 若是發生異常try子句剩餘的部分將被忽略,異常的類型和except後的名稱相符則執行except子句
  4. 若是異常類型和except定義的不匹配則會從新傳遞給try子句,由解釋器拋出錯誤信息

注意:函數

  • 能夠定義多個不一樣類型的異常,最多隻有一個分支被執行
  • 一個except語句也能夠同時處理多個異常,須要將這些異常放在一個元組中
  • 當except沒有指定具體的異常類型時,它將被當作通配符使用,接收全部異常

try/except...else

try:
    # 正常執行的代碼
    a = 3
    b = 4
    c = a/b
except:
    # 發生異常時執行的代碼
    print('發生異常')
else:
    # 沒有發生異常時執行的代碼
    print('{0}/{1}={2}'.format(a,b,c))
3/4=0.75
  • else子句在try子句沒有發生異常時執行
  • 使用 else 子句比把全部的語句都放在 try 子句裏面要好,不單單處理那些直接發生在 try 子句中的異常,並且還能處理子句中調用的函數(甚至間接調用的函數)裏拋出的異常。
  • else子句方便定位異常

try/finally

try:
    # 正常執行的代碼
    a = 3
    b = 4
    c = a/b
    d = 10
    e = d/0
except:
    # 發生異常時執行的代碼
    print('發生異常')
else:
    # 沒有發生異常時執行的代碼
    print('{0}/{1}={2}'.format(a,b,c))
finally:
    print('d*c={0}'.format(c*d))
發生異常
d*c=7.5
  • try-finally 語句不管是否發生異常都將執行最後的代碼。

拋出異常

Python 使用 raise 語句拋出一個指定的異常。code

raise語法格式orm

raise [Exception [, args [, traceback]]]htm

a = 0
if a == 0:
    raise Exception('b/a中除數a爲0因此拋出異常')
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-4-f517360799a9> in <module>
      1 a = 0
      2 if a == 0:
----> 3     raise Exception('b/a中除數a爲0因此拋出異常')

Exception: b/a中除數a爲0因此拋出異常

相關閱讀

斷言(assert)blog


在這裏插入圖片描述

相關文章
相關標籤/搜索