python异常处理操作语句_异常处理语句(2)
1.?try...except語句的嵌套
這種語句就是多except語句的多處理方式,下面我們通過一個(gè)例題來學(xué)習(xí)一下try...except的語句嵌套。def?test():
n?=?int(input('有3個(gè)語句需要測試,請選擇(1/2/3):'))
if?n?==?1:#keyError異常情況
my_dict?=?{'dotcpp':?123}
print(my_dict['dot'])
elif?n?==?2:#IndexError異常
my_list?=?[1,?2,?3,?4,?5]
print(my_list[100])
elif?n?==?3:#NameError異常
print('不存在的變量dotcpp:',?dotcpp)
try:
try:
try:
test()
except?KeyError:
print('KeyError異常')
except?IndexError:
print('IndexError異常')
except?NameError:
print('NameError異常')
我們分別測試1/2/3,輸出結(jié)果如下:有3個(gè)語句需要測試,請選擇(1/2/3):1
KeyError異常
有3個(gè)語句需要測試,請選擇(1/2/3):2
IndexError異常
有3個(gè)語句需要測試,請選擇(1/2/3):3
NameError異常
在這個(gè)例題中,我們首先在定義的函數(shù)中輸入一個(gè)判斷量n,然后根據(jù)n的值給出了三種異常的情況,然后我們在最后嵌套了3個(gè)try..except語句,也就是說test()語句的結(jié)果會(huì)經(jīng)過三層判斷。
2.?try...except...finally語句
一個(gè)完整的異常處理機(jī)制是離不開finally語句的,這個(gè)語句的作用是不管我們的程序中是否有異常發(fā)生,finally語句下的代碼都會(huì)被執(zhí)行,它的語法格式為:try:
block
except?[typeerror]:
deal1
finally:
deal2
我們通過一個(gè)例子來看一下這種結(jié)構(gòu):def?test():
n?=?int(input('請輸入一個(gè)整數(shù):'))
print(n)
try:
test()
except?KeyError:
print('KeyError異常')
finally:
print('finally語句已執(zhí)行')
我們分別輸入6和dotcpp來看一下輸出結(jié)果:請輸入一個(gè)整數(shù):5
5
finally語句已執(zhí)行
請輸入一個(gè)整數(shù):dotcpp
finally語句已執(zhí)行
Traceback?(most?recent?call?last):
File?"C:/Users/test.py",?line?5,?in?
test()
File?"C:/Users/test.py",?line?2,?in?test
n?=?int(input('請輸入一個(gè)整數(shù):'))
ValueError:?invalid?literal?for?int()?with?base?10:?'dotcpp'
通過這個(gè)例子我們可以看出,無論我們的程序是否出現(xiàn)異常,finally語句都會(huì)執(zhí)行。
3.?try...except...else語句
我們在上面學(xué)習(xí)的finally語句是無論語句是否發(fā)生異常都會(huì)執(zhí)行的語句,下面我們來學(xué)習(xí)的try...except...else語句當(dāng)程序中未發(fā)生異常的時(shí)候才會(huì)執(zhí)行,它的語法結(jié)構(gòu)為:try:
block
except?[typeerror?]:
deal1
else:
deal2
下面我們看例子:def?test():
n?=?int(input('請輸入一個(gè)整數(shù):'))
print('輸入值為:',n)
try:
test()
except?ValueError:
print('ValueError異常')
else:
print('當(dāng)前程序未出現(xiàn)異常')
輸出結(jié)果為:請輸入一個(gè)整數(shù):5
輸入值為:?5
當(dāng)前程序未出現(xiàn)異常
當(dāng)我們輸入值為dotcpp時(shí)請輸入一個(gè)整數(shù):dotcpp
ValueError異常
我們可以看出當(dāng)程序異常的時(shí)候else語句并沒執(zhí)行,這些語句的區(qū)分難度并不大,大家可以通過例子去練習(xí)一下這幾種常用的異常處理語句。
總結(jié)
以上是生活随笔為你收集整理的python异常处理操作语句_异常处理语句(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android获取imei兼容_Andr
- 下一篇: python定时播放音乐程序_pytho