IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
除了可以捕獲到指定的異常和沒有發(fā)生異常這兩種情況外,還有第三種情況,就是在try和except之間的代碼塊中,發(fā)生了異常,但不是指定的異常:
- try:
- # 將輸入x和y的代碼放進(jìn)try中,其余不變
- x = int(input('請輸入被除數(shù):'))
- y = int(input('請輸入除數(shù):'))
- result = x / y
- print('結(jié)果為{}'.format(result))
- except ZeroDivisionError:
- print('除數(shù)不能為零')
- print('=' * 30)
嘗試輸入被除數(shù)為一個(gè)不能轉(zhuǎn)換為整數(shù)的字符串,如字母'c':
- 請輸入被除數(shù):c
- Traceback (most recent call last):
- File "example.py", line 2, in <module>
- x = int(input('請輸入被除數(shù):'))
- ValueError: invalid literal for int() with base 10: 'c'
Python解釋器提示出錯(cuò)了,ValueError,而上述代碼只能捕獲ZeroDivisionError,這就是第三種情況,如果發(fā)生了異常,但不是指定的ZeroDivisionError,Python解釋器仍然報(bào)錯(cuò)(除非在外層的try-except語句中處理了這個(gè)異常)。
如果想同時(shí)處理這兩種異常,那么可以將這兩種異常名稱全部寫在except語句后面,用逗號分隔開,并用括號括起來:
- try:
- x = int(input('請輸入被除數(shù):'))
- y = int(input('請輸入除數(shù):'))
- result = x / y
- print('結(jié)果為{}'.format(result))
- except (ZeroDivisionError, ValueError):
- print('除數(shù)不能為零, 且被除數(shù)與除數(shù)必須為數(shù)字')
- print('=' * 30)
運(yùn)行修改后的程序,輸入被除數(shù)為'c':
- 請輸入被除數(shù):c
- 除數(shù)不能為零, 且被除數(shù)與除數(shù)必須為數(shù)字
- ==============================
由此可見,成功處理了ValueError。再次運(yùn)行程序,試試它還能不能處理ZeroDivisionError:
- 請輸入被除數(shù):10
- 請輸入除數(shù):0
- 除數(shù)不能為零, 且被除數(shù)與除數(shù)必須為數(shù)字
- =============================
可以同時(shí)處理這兩種異常,要處理更多的異常也是如此,只要在括號中添加待處理的異常即可。除此之外,還可以使用多個(gè)except關(guān)鍵字,分別處理這兩種異常的情況,這樣做的好處是可以根據(jù)不同的異常進(jìn)行不同的處理:
- try:
- x = int(input('請輸入被除數(shù):'))
- y = int(input('請輸入除數(shù):'))
- result = x / y
- print('結(jié)果為{}'.format(result))
- except ZeroDivisionError: # 處理ZeroDivisionError
- print('除數(shù)不能為零!')
- except ValueError: # 處理ValueError
- print('除數(shù)與被除數(shù)必須為數(shù)字!')
- print('=' * 30)
測試是否能處理這兩種異常,首先測試是否處理ValueError:
- 請輸入被除數(shù):s
- 除數(shù)與被除數(shù)必須為數(shù)字!
- ==============================
然后測試是否處理ZeroDivisionError:
- 請輸入被除數(shù):10
- 請輸入除數(shù):0
- 除數(shù)不能為零!
- ==============================
由此可見,使用兩個(gè)except關(guān)鍵字能夠分別處理這兩種異常情況。
更多內(nèi)容
>>本文地址:http://liujunjsxg.cn/zhuanye/2021/69825.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個(gè)方向的工作?