400-650-7353
您所在的位置:首頁(yè) > IT干貨資料 > python > 【Python基礎(chǔ)知識(shí)】Python處理異常語(yǔ)句

【Python基礎(chǔ)知識(shí)】Python處理異常語(yǔ)句

  • 發(fā)布: 優(yōu)就業(yè)it培訓(xùn)
  • 來源:優(yōu)就業(yè)
  • 2021-06-18 18:26:16
  • 閱讀()
  • 分享
  • 手機(jī)端入口

1、try-except語(yǔ)句

在代碼中出現(xiàn)的異常,除了可以看到解釋器報(bào)錯(cuò)外,還可以捕獲并處理它們。在Python中使用try-except語(yǔ)句處理異常,語(yǔ)法格式如下:

try:

代碼塊1

except 異常名稱:

代碼塊2

try-except語(yǔ)句的工作流程如下:

①執(zhí)行在try和except之間的代碼塊1,如果發(fā)生了異常,則會(huì)根據(jù)異常類型提交處理,這一過程為異常捕獲。

②如果發(fā)生except 后指定的異常,那么跳過代碼塊1中剩余的代碼,執(zhí)行except語(yǔ)句下面的代碼塊2。成功處理指定異常的過程稱為異常處理。

③如果沒有發(fā)生指定的異常,那么執(zhí)行完try和except之間的代碼塊1后,跳過except語(yǔ)句下面的代碼塊2,繼續(xù)執(zhí)行后面的代碼。

下面是一個(gè)處理異常的示例,它讓用戶輸入兩個(gè)整數(shù),并求出這兩個(gè)整數(shù)相除的結(jié)果,由于用戶輸入的除數(shù)可能為零,除數(shù)為零就會(huì)發(fā)生異常(使用腳本模式運(yùn)行):

  1. x = int(input('請(qǐng)輸入被除數(shù):')) 
  2. y = int(input('請(qǐng)輸入除數(shù):')) 
  3. try
  4.     result = x / y 
  5.     print('結(jié)果為{}'.format(result)) 
  6. except ZeroDivisionError: 
  7.     print('除數(shù)不能為零'
  8. print('=' * 30)   # 這一行用來確定程序運(yùn)行到哪了 

輸入幾組數(shù)據(jù),測(cè)試運(yùn)行結(jié)果:

  1. 請(qǐng)輸入被除數(shù):10 
  2. 請(qǐng)輸入除數(shù):5 
  3. 結(jié)果為2.0 
  4. ============================== 
  5. 請(qǐng)輸入被除數(shù):10 
  6. 請(qǐng)輸入除數(shù):0 
  7. 除數(shù)不能為零 
  8. ============================== 

由此可知,如果程序發(fā)生了指定異常,并且成功將它捕獲,那么Python解釋器并不會(huì)報(bào)錯(cuò),而是跳過try和except之間的代碼塊,執(zhí)行except語(yǔ)句下面的的代碼塊。

2、else語(yǔ)句

在try-except語(yǔ)句塊中,還可以包含else語(yǔ)句,其語(yǔ)法格式如下:

try:

代碼塊1

except:

代碼塊2

else:

代碼塊3

當(dāng)未引發(fā)任何異常時(shí),執(zhí)行else代碼塊:

  1. try
  2.     x = int(input('請(qǐng)輸入被除數(shù):')) 
  3.     y = int(input('請(qǐng)輸入除數(shù):')) 
  4.     result = x / y 
  5. except (ZeroDivisionError, ValueError):  # 這里同時(shí)捕獲兩種異常 
  6.     print('除數(shù)不能為零, 且被除數(shù)與除數(shù)必須為數(shù)字'
  7. else
  8.     print('=' * 30
  9.     print('結(jié)果為{}'.format(result)) 

輸入一組數(shù)據(jù),運(yùn)行結(jié)果:

  1. 請(qǐng)輸入被除數(shù):10 
  2. 請(qǐng)輸入除數(shù):5 
  3. ============================== 
  4. 結(jié)果為2.0 

3、finally語(yǔ)句

Python中的finally用來做后續(xù)的“清理工作”,其語(yǔ)法格式如下:

try:

代碼塊1

except :

代碼塊2

finally :

代碼塊3

如果存在finally語(yǔ)句,無(wú)論try-except代碼塊是否發(fā)生錯(cuò)誤,finally代碼塊都將執(zhí)行:

  1. try
  2.     x = int(input('請(qǐng)輸入被除數(shù):')) 
  3.     y = int(input('請(qǐng)輸入除數(shù):')) 
  4.     result = x / y 
  5. except (ZeroDivisionError, ValueError):  
  6.     print('除數(shù)不能為零, 且被除數(shù)與除數(shù)必須為數(shù)字')  
  7. else
  8.     print('結(jié)果為{}'.format(result)) 
  9. finally
  10.     print('再見!'

當(dāng)發(fā)生異常時(shí),else代碼塊并沒有執(zhí)行,但是finally代碼塊執(zhí)行了:

  1. 請(qǐng)輸入被除數(shù):10 
  2. 請(qǐng)輸入除數(shù):0 
  3. 除數(shù)不能為零, 且被除數(shù)與除數(shù)必須為數(shù)字 
  4. 再見! 

當(dāng)未發(fā)生異常時(shí),else代碼塊執(zhí)行了,finally代碼塊也執(zhí)行了:

  1. 請(qǐng)輸入被除數(shù):10 
  2. 請(qǐng)輸入除數(shù):5 
  3. 結(jié)果為2.0 
  4. 再見! 

因此,當(dāng)存在try-except-else-finally語(yǔ)句時(shí),首先執(zhí)行try-except代碼塊;如果沒有異常,那么執(zhí)行else代碼塊,否則不執(zhí)行;而finally代碼塊無(wú)論怎樣都會(huì)執(zhí)行。

4、raise語(yǔ)句

raise語(yǔ)句用來拋出異常,可以自定義引發(fā)哪種錯(cuò)誤以及向用戶顯示文本。拋出自定義異常時(shí),可以在異常類型后加上括號(hào),并在括號(hào)內(nèi)寫出要顯示的文本。在下面的示例中,引發(fā)類型異常時(shí),自定義的提示文本是“類型不對(duì)”:

  1. >>> raise TypeError('類型不對(duì)'
  2. Traceback (most recent call last): 
  3.   File "<stdin>", line 1in <module> 
  4. TypeError: 類型不對(duì) 

 

文章“【Python基礎(chǔ)知識(shí)】Python處理異常語(yǔ)句”已幫助

更多內(nèi)容

>>本文地址:http://littlerockbway.com/zhuanye/2021/69065.html

THE END  

聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。

1 您的年齡

2 您的學(xué)歷

3 您更想做哪個(gè)方向的工作?

獲取測(cè)試結(jié)果
  • 大前端大前端
  • 大數(shù)據(jù)大數(shù)據(jù)
  • 互聯(lián)網(wǎng)營(yíng)銷互聯(lián)網(wǎng)營(yíng)銷
  • JavaJava
  • Linux云計(jì)算Linux
  • Python+人工智能Python
  • 嵌入式物聯(lián)網(wǎng)嵌入式
  • 全域電商運(yùn)營(yíng)全域電商運(yùn)營(yíng)
  • 軟件測(cè)試軟件測(cè)試
  • 室內(nèi)設(shè)計(jì)室內(nèi)設(shè)計(jì)
  • 平面設(shè)計(jì)平面設(shè)計(jì)
  • 電商設(shè)計(jì)電商設(shè)計(jì)
  • 網(wǎng)頁(yè)設(shè)計(jì)網(wǎng)頁(yè)設(shè)計(jì)
  • 全鏈路UI/UE設(shè)計(jì)UI設(shè)計(jì)
  • VR/AR游戲開發(fā)VR/AR
  • 網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全
  • 新媒體與短視頻運(yùn)營(yíng)新媒體
  • 直播帶貨直播帶貨
  • 智能機(jī)器人軟件開發(fā)智能機(jī)器人
 

快速通道fast track

近期開班時(shí)間TIME