1. 程式人生 > >python基礎:異常簡介

python基礎:異常簡介

異常簡介
異常是指在語法正確的前提下,程式執行時報錯就是異常。
當Python指令碼發生異常時我們需要捕獲處理它,否則程式會終止執行。

異常舉例:

print('程式開始了')
print(1/0)
print('程式結束了')

執行結果

  程式開始了
    Traceback (most recent call last):
      File "E:/homework/pythonworksplace/dey10/demon07-異常簡介.py", line 9, in <module>
        print(1/0)
    ZeroDivisionError: division by zero

怎樣能讓程式發生異常時,不讓程式停止,能正常執行呢?如下效果,就需要捕獲異常。

while True:
    try:
        ret=eval(input('請輸入計算公式:'))
        print(ret)
    except ZeroDivisionError:
        print('除數不能為0,請重新輸入')

執行結果:

請輸入計算公式:1+4
5
請輸入計算公式:1/0
除數不能為0,請重新輸入
請輸入計算公式:

捕獲異常
基本語法
try:
…程式碼1…
…程式碼2…
except 異常型別1:
…程式碼3…
except 異常型別2:
…程式碼4…
except 異常型別3:
…程式碼5…
注意:
如果發生的異常型別和捕獲的異常型別不相同,還是不能捕獲異常,程式還會結束。
try中一旦檢測到異常,就執行這個位置的邏輯

except捕獲多個異常
異常捕獲流程: 依次捕獲依次,直到捕獲到對應的異常。

多分支結構:
try:
…程式碼1…
…程式碼2…
except 異常型別1:
…程式碼3…
except 異常型別2:
…程式碼4…
except 異常型別3:
…程式碼5…

try:
    print('程式開始了')
    print(1/0)
    print('啦啦啦啦')
    lst=[]
    print(lst[1])
    print('zzz')
except IndexError:
    print('索引越界')
except ZeroDivisionError:
    print('除數為0了...')
print('程式結束了')

執行結果:

程式開始了
除數為0了...
程式結束了

元組結構:
try:
…程式碼1…
…程式碼1…
…程式碼1…
expect(異常型別1,異常型別2,…)
…程式碼4…

try:
    print('程式開始了')
    print(1/0)
    print('啦啦啦啦')
    lst=[]
    print(lst[1])
    print('zzz')
except (IndexError,ZeroDivisionError):
    print('程式出錯了...')

print('程式結束了')

執行結果:

程式開始了
程式出錯了...
程式結束了