捕獲異常
# 對(duì)數(shù)字變量使用append操作a = 123a.apppend(4)
執(zhí)行這個(gè)程序時(shí),會(huì)拋出:
AttributeError: 'int' object has no attribute 'apppend'
我們使用try:except語句進(jìn)行捕獲。
# 捕獲異常a = 123try: a.apppend(4)except AttributeError: print("數(shù)字類型不能使用append操作")輸出結(jié)果如下:
數(shù)字類型不能使用append操作
捕獲多個(gè)異常
# 捕獲異常a = 123try: # a.apppend(4) print(1/0)except AttributeError: print("數(shù)字類型不能使用append操作")except ZeroDivisionError: print("0不能作為除數(shù)")輸出結(jié)果:
0不能作為除數(shù)
當(dāng)然也可以類似JDK1.7那樣,把異常放置到一起。
# 捕獲異常a = 123try: a.apppend(4) # print(1/0)except (AttributeError,ZeroDivisionError) as e: print("出現(xiàn)錯(cuò)誤 %s" %e)把異常類型放置到一個(gè)元祖里面,如果想打印具體的異常信息,可以將異常信息重新命名,然后打印出來。
輸出結(jié)果如下:
出現(xiàn)錯(cuò)誤 'int' object has no attribute 'apppend'
使用Exception捕獲所有異常
# 捕獲異常a = 123try: print(1/'kk')except Exception as e: print("出現(xiàn)錯(cuò)誤 %s" %e) 統(tǒng)一用Exception進(jìn)行捕獲,輸出結(jié)果如下:
出現(xiàn)錯(cuò)誤 unsupported operand type(s) for /: 'int' and 'str'
自定義異常
# 捕獲異常a = 123try: if a == 123: raise NameError("a是不能等于123的哦")except NameError as e: print("出現(xiàn)錯(cuò)誤 %s" %e)可以使用raise關(guān)鍵字和NameError,輸出結(jié)果如下:
出現(xiàn)錯(cuò)誤 a是不能等于123的哦
finally語句
try: print(1/0)except Exception as e: print("出現(xiàn)錯(cuò)誤 %s" %e)finally: print("執(zhí)行finally")執(zhí)行結(jié)果如下:
出現(xiàn)錯(cuò)誤 division by zero執(zhí)行finally
說明就算拋出了一次,finally語句仍然會(huì)被執(zhí)行。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)VEVB武林網(wǎng)的支持。
新聞熱點(diǎn)
疑難解答
圖片精選