1. try 與 except
范例1:
單分支
try:
ret = int(input("number >>>"))
print(ret*"*")
except ValueError:
print("您輸入的內容有誤奴迅,請輸入一個數(shù)字")
執(zhí)行結果:
number >>>a
您輸入的內容有誤后专,請輸入一個數(shù)字
范例2:多分支
try:
[][3]
ret = int(input("number >>>"))
print(ret*"*")
except ValueError:
print("您輸入的內容有誤誊册,請輸入一個數(shù)字")
except IndexError:
print("超出列表的最大長度了")
執(zhí)行結果:
超出列表的最大長度了
范例3:萬能異常
try:
print("1111")
1/0
name
[][3]
{}["k"]
ret = int(input("number >>>"))
print(ret*"*")
except Exception:
print("你錯了,老鐵")
執(zhí)行結果:
1111
你錯了,老鐵
范例4:else
try:
print("1111")
#1/0
print("2222")
#name
#[][3]
#{}["k"]
ret = int(input("number >>>"))
print(ret*"*")
except ValueError:
print('輸入的數(shù)據(jù)類型有誤')
except Exception:
print("你錯了药有,老鐵")
else:
print("沒有異常的時候執(zhí)行else中的代碼")
執(zhí)行結果:
1111
2222
number >>>11
***********
沒有異常的時候執(zhí)行else中的代碼
范例5:finally
try:
print("1111")
#1/0
print("2222")
#name
#[][3]
#{}["k"]
ret = int(input("number >>>"))
print(ret*"*")
except ValueError:
print('輸入的數(shù)據(jù)類型有誤')
except Exception:
print("你錯了臀晃,老鐵")
else:
print("沒有異常的時候執(zhí)行else中的代碼")
finally:
print("======")
執(zhí)行結果:
1111
2222
number >>>3
***
沒有異常的時候執(zhí)行else中的代碼
======
范例6:finally的文件應用
def func():
try:
f = open('file','w')
''''''
return True
except:
return False
finally:
print('執(zhí)行finally了')
f.close()
print(func())
執(zhí)行結果:
執(zhí)行finally了
True
范例7:
try:
print("1111")
#1/0
print("2222")
#name
#[][3]
#{}["k"]
ret = int(input("number >>>"))
print(ret*"*")
except Exception as error:
print("你錯了,老鐵",error)
執(zhí)行結果:
1111
2222
number >>>aaa
你錯了夯秃,老鐵 invalid literal for int() with base 10: 'aaa'
2. 小結
# 程序一旦發(fā)生錯誤座咆,就從錯誤的位置停下來了,不在繼續(xù)執(zhí)行后面的內容
# 使用try和except就能處理異常
#try是我們需要處理的代碼
#except 后面跟一個錯誤類型 當代碼發(fā)生錯誤且錯誤類型符合的時候 就會執(zhí)行except中的代碼
#except支持多分支
#有沒有一個能處理所有錯誤的類型 : Exception
# 有了萬能的處理機制仍然需要把能預測到的問題單獨處理
# 單獨處理的所有內容都應該寫在萬能異常之前
# else : 沒有異常的時候執(zhí)行else中的代碼
# finally : 不管代碼是否異常仓洼,都會執(zhí)行
# finally和return相遇的時候 依然會執(zhí)行
# 函數(shù)里做異常處理用,不管是否異常去做一些收尾工作