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

【Python基礎(chǔ)知識(shí)】捕獲多個(gè)異常

  • 來(lái)源:
  • 2021-08-30 16:38:09
  • 閱讀()
  • 分享
  • 手機(jī)端入口

除了可以捕獲到指定的異常和沒(méi)有發(fā)生異常這兩種情況外,還有第三種情況,就是在try和except之間的代碼塊中,發(fā)生了異常,但不是指定的異常:

  1. try
  2.     # 將輸入x和y的代碼放進(jìn)try中,其余不變 
  3.     x = int(input('請(qǐng)輸入被除數(shù):')) 
  4.     y = int(input('請(qǐng)輸入除數(shù):')) 
  5.     result = x / y 
  6.     print('結(jié)果為{}'.format(result)) 
  7. except ZeroDivisionError: 
  8.     print('除數(shù)不能為零'
  9. print('=' * 30

嘗試輸入被除數(shù)為一個(gè)不能轉(zhuǎn)換為整數(shù)的字符串,如字母'c':

  1. 請(qǐng)輸入被除數(shù):c 
  2. Traceback (most recent call last): 
  3.   File "example.py", line 2in <module> 
  4.     x = int(input('請(qǐng)輸入被除數(shù):')) 
  5. ValueError: invalid literal for int() with base 10'c' 

Python解釋器提示出錯(cuò)了,ValueError,而上述代碼只能捕獲ZeroDivisionError,這就是第三種情況,如果發(fā)生了異常,但不是指定的ZeroDivisionError,Python解釋器仍然報(bào)錯(cuò)(除非在外層的try-except語(yǔ)句中處理了這個(gè)異常)。

如果想同時(shí)處理這兩種異常,那么可以將這兩種異常名稱全部寫(xiě)在except語(yǔ)句后面,用逗號(hào)分隔開(kāi),并用括號(hào)括起來(lái):

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

運(yùn)行修改后的程序,輸入被除數(shù)為'c':

  1. 請(qǐng)輸入被除數(shù):c 
  2. 除數(shù)不能為零, 且被除數(shù)與除數(shù)必須為數(shù)字 
  3. ============================== 

由此可見(jiàn),成功處理了ValueError。再次運(yùn)行程序,試試它還能不能處理ZeroDivisionError:

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

可以同時(shí)處理這兩種異常,要處理更多的異常也是如此,只要在括號(hào)中添加待處理的異常即可。除此之外,還可以使用多個(gè)except關(guān)鍵字,分別處理這兩種異常的情況,這樣做的好處是可以根據(jù)不同的異常進(jìn)行不同的處理:

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

測(cè)試是否能處理這兩種異常,首先測(cè)試是否處理ValueError:

  1. 請(qǐng)輸入被除數(shù):s 
  2. 除數(shù)與被除數(shù)必須為數(shù)字! 
  3. ============================== 

然后測(cè)試是否處理ZeroDivisionError:

  1. 請(qǐng)輸入被除數(shù):10 
  2. 請(qǐng)輸入除數(shù):0 
  3. 除數(shù)不能為零! 
  4. ============================== 

由此可見(jiàn),使用兩個(gè)except關(guān)鍵字能夠分別處理這兩種異常情況。

文章“【Python基礎(chǔ)知識(shí)】捕獲多個(gè)異常”已幫助

更多內(nèi)容

>>本文地址:http://nfbqydst.cn/zhuanye/2021/69825.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游戲開(kāi)發(fā)VR/AR
  • 網(wǎng)絡(luò)安全網(wǎng)絡(luò)安全
  • 新媒體與短視頻運(yùn)營(yíng)新媒體
  • 直播帶貨直播帶貨
  • 智能機(jī)器人軟件開(kāi)發(fā)智能機(jī)器人
 

快速通道fast track

近期開(kāi)班時(shí)間TIME