Pyhton 异常
捕獲異常
簡(jiǎn)單的捕獲異常語(yǔ)法
- 如果對(duì)某些代碼的執(zhí)行不能確定是否正確,可以增加 try(嘗試) 來(lái)捕獲異常
- 捕獲異常最簡(jiǎn)單的語(yǔ)法格式:
- try 嘗試,下方編寫(xiě)要嘗試嗲嗎,不確定是否能夠正常執(zhí)行的代碼
- except 如果不是,下方編寫(xiě)嘗試失敗的代碼
示例:
try:# 不能確定正確執(zhí)行的代碼num = int(input("請(qǐng)輸入一個(gè)整數(shù):")) except:# 錯(cuò)誤的處理代碼print("請(qǐng)輸入正確的整數(shù)")print("程序執(zhí)行結(jié)束")錯(cuò)誤類(lèi)型捕獲
- 在程序執(zhí)行時(shí),可能會(huì)遇到 不同類(lèi)型的異常,并且需要針對(duì)不同類(lèi)型的異常,做出不同的響應(yīng),這個(gè)時(shí)候,就需要捕獲錯(cuò)誤類(lèi)型了
語(yǔ)法如下:
try# 嘗試執(zhí)行的代碼pass except 錯(cuò)誤類(lèi)型1:# 針對(duì)錯(cuò)誤類(lèi)型1,對(duì)應(yīng)的代碼處理pass except (錯(cuò)誤類(lèi)型2, 錯(cuò)誤類(lèi)型3):# 針對(duì)錯(cuò)誤類(lèi)型2 和 3,對(duì)應(yīng)的代碼處理pass except Exception as result:print("未知錯(cuò)誤 %s" % result)示例:
try:# 提示用戶輸入一個(gè)整數(shù)num = int(input("請(qǐng)輸入一個(gè)整數(shù):"))# 使用 8 除以用戶輸入的整數(shù)并且輸出result = 8 / numprint(result) except ZeroDivisionError:print("除0錯(cuò)誤") except ValueError:print("請(qǐng)輸入正確的整數(shù):")- 當(dāng) Python 解釋器 拋出異常時(shí), 最后一行錯(cuò)誤信息的第一個(gè)單詞,就是錯(cuò)誤類(lèi)型
捕獲未知錯(cuò)誤
- 如果希望程序 無(wú)論出現(xiàn)任何錯(cuò)誤,都不會(huì)因?yàn)?Python 解釋器拋出異常而被終止,可以再增加一個(gè) except
語(yǔ)法如下:
except Exception as result:print("未知錯(cuò)誤 %s" % result)異常捕獲完整語(yǔ)法
完整的異常語(yǔ)法如下:
try# 嘗試執(zhí)行的代碼pass except 錯(cuò)誤類(lèi)型1:# 針對(duì)錯(cuò)誤類(lèi)型1,對(duì)應(yīng)的代碼處理pass except 錯(cuò)誤類(lèi)型2:# 針對(duì)錯(cuò)誤類(lèi)型2,對(duì)應(yīng)的代碼處理pass except (錯(cuò)誤類(lèi)型3, 錯(cuò)誤類(lèi)型4):# 針對(duì)錯(cuò)誤類(lèi)型3 和 4,對(duì)應(yīng)的代碼處理pass except Exception as result:# 打印錯(cuò)誤信息print(result) else:# 沒(méi)有異常才會(huì)執(zhí)行的代碼pass finally:# 無(wú)論是否有異常,都會(huì)執(zhí)行的代碼print("無(wú)論是否有異常,都會(huì)執(zhí)行的代碼")- else 只有在沒(méi)有異常時(shí)才會(huì)執(zhí)行的代碼
- finally 無(wú)論是否有異常,都會(huì)執(zhí)行的代碼
示例:
try:# 提示用戶輸入一個(gè)整數(shù)num = int(input("請(qǐng)輸入一個(gè)整數(shù):"))# 使用 8 除以用戶輸入的整數(shù)并且輸出result = 8 / numprint(result) except ZeroDivisionError:print("除0錯(cuò)誤") except Exception as result:print("未知錯(cuò)誤 %s" % result) else:print("嘗試成功") finally:print("無(wú)論是否出現(xiàn)錯(cuò)誤都會(huì)執(zhí)行的代碼")異常的傳遞
- 異常的傳遞——當(dāng) 函數(shù)/方法執(zhí)行 出現(xiàn)異常,會(huì)將異常傳遞給函數(shù)/方法的調(diào)用一方
- 如果 傳遞到主程序,仍然沒(méi)有異常處理,程序才會(huì)被終止
示例:
def demo1():return int(input("輸入整數(shù):"))def demo2():return demo1()# 利用異常的傳遞性,在主程序捕獲異常 try:print(demo2()) except Exception as result:print("位置錯(cuò)誤 %s" % result)主動(dòng)拋出異常
- Pyhon 中提供了一個(gè) Exception 異常類(lèi)
- 在開(kāi)發(fā)時(shí),如果希望能夠主動(dòng)拋出異常,可以:
- 創(chuàng)建一個(gè) Exception 的對(duì)象
- 使用 raise 關(guān)鍵字 拋出 異常對(duì)象
總結(jié)
- 上一篇: LINUX 上的 Shebang 符号(
- 下一篇: Pyhton 模块和包