Python-異常處理

異常處理:

??????? 對(duì)出現(xiàn)的異常做出相應(yīng)處理

Python中的異常處理能力是很強(qiáng)大的,可向用戶準(zhǔn)確反饋出錯(cuò)信息。在Python中,異常也是對(duì)象,可對(duì)它進(jìn)行操作。所有異常都是基類Exception的成員。所有異常都從基類Exception繼承,而且都在exceptions模塊中定義。Python自動(dòng)將所有異常名稱放在內(nèi)建命名空間中,所以程序不必導(dǎo)入exceptions模塊即可使用異常。一旦引發(fā)而且沒有捕捉SystemExit異常,程序執(zhí)行就會(huì)終止。如果交互式會(huì)話遇到一個(gè)未被捕捉的SystemExit異常,會(huì)話就會(huì)終止。

為什么要處理異常:

當(dāng)程序在運(yùn)行過程中,由于用戶的誤操作或者不合適的數(shù)據(jù)引發(fā)的程序錯(cuò)誤,讓代碼自己處理并保證程序的正常執(zhí)行。而不至于因?yàn)殄e(cuò)誤導(dǎo)致程序崩潰!

提高代碼的健壯性!

怎么處理異常:

???? 捕獲處理異常

語(yǔ)法:

?try:#嘗試,通常情況,將可能出現(xiàn)異常的代碼,包含在try中

<可能會(huì)出現(xiàn)異常的代碼>

except[異常信息]:#一旦出現(xiàn)異常,代碼就會(huì)直接從出現(xiàn)異常的地方跳轉(zhuǎn)到except中執(zhí)行

<出現(xiàn)異常之后要執(zhí)行的代碼>

else:#如果try中的代碼執(zhí)行沒有異常,執(zhí)行完畢后,就會(huì)執(zhí)行else中的代碼

<正常執(zhí)行try之后,else中的代碼執(zhí)行>

finally:?#不論是否出現(xiàn)異常,都要在try執(zhí)行完成之后執(zhí)行的代碼

<最終的掃尾工作>

案例:

"""

print("***************")

print("科學(xué)計(jì)算器")

print("***************")

num = input("請(qǐng)輸入第一個(gè)數(shù)據(jù):")

try:

nun_int = int(num)

except:

print("不好意思,你沒有按規(guī)定輸入")

else:

print("用戶輸入了第一個(gè)數(shù)據(jù):%s"%num)

"""

#捕獲具體異常

print("***************")

print("科學(xué)計(jì)算器")

print("***************")

num =input("請(qǐng)輸入第一個(gè)數(shù)據(jù):")

try:

nun_int =int(num)

exceptValueErrorase:

print("不好意思,你輸入了非法數(shù)據(jù):%s"%e)

else:

print("用戶輸入了第一個(gè)數(shù)據(jù):%s"%num)

自定義異常:

在Python中,要想引發(fā)異常,最簡(jiǎn)單的形式就是輸入關(guān)鍵字raise,后跟要引發(fā)的異常的名稱。異常名稱標(biāo)識(shí)出具體的類:Python異常是那些類的對(duì)象。執(zhí)行raise語(yǔ)句時(shí),Python會(huì)創(chuàng)建指定的異常類的一個(gè)對(duì)象。raise語(yǔ)句還可指定對(duì)異常對(duì)象進(jìn)行初始化的參數(shù)。為此,請(qǐng)?jiān)诋惓n惖拿Q后添加一個(gè)逗號(hào)以及指定的參數(shù)(或者由參數(shù)構(gòu)成的一個(gè)元組)。

案例:

#定義了一個(gè)輸入值的函數(shù):開發(fā)人員A開發(fā)的代碼

definputNumber():

try:

num =int(input("請(qǐng)輸入一個(gè)數(shù)值:"))

exceptValueError:#捕獲系統(tǒng)異常

raiseNumError()

else:

print("用戶輸入了:%d"%num)

returnnum

#開發(fā)人員B在開發(fā)你的代碼

#調(diào)用輸入值的方法

try:

num = inputNumber()

exceptNumErrorase:

print("出現(xiàn)了異常信息:%s"%e)

多異常:

我們經(jīng)常也會(huì)遇到多個(gè)異常出現(xiàn),對(duì)多異常處理的方法如下:

try-except (E1, E2, E3, …,En)ase一個(gè)except處理指定的多個(gè)異常

try-exceptE1-except?E2-except?E3…每個(gè)except處理指定的異常

案例1

try:

c =int(input("請(qǐng)輸入你的選擇:"))#ValueError

ifc ==1:

f =open("d:/text.txt")#FileNotFoundError

print(f.read())

f.close()

exceptValueErrorase:

print("選項(xiàng)輸入錯(cuò)誤:%s"%e)

exceptFileNotFoundErrorase:

print("文件讀取錯(cuò)誤:%s"% e)

exceptExceptionase:

print("程序出現(xiàn)未知錯(cuò)誤:%s"%e)

print("程序執(zhí)行完成!")

案例2:

try:

c = int(input("請(qǐng)輸入你的選擇:"))#ValueError

if c ==1:

f = open("d:/text.txt")#FileNotFoundError

print(f.read())

f.close()

except (ValueError,FileNotFoundError) as e:

print("程序出現(xiàn)錯(cuò)誤:%s"%e)

print("程序執(zhí)行完成!")




最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Python異常處理 異常概念: 異常:就是不正常的情況,程序開發(fā)過程中錯(cuò)誤和BUG都是補(bǔ)充正常的情況 異常發(fā)生的...
    youngkun閱讀 941評(píng)論 0 4
  • 異常處理在程序的健壯性上表現(xiàn)的尤為重要, 例1:#!/usr/bin/pythonimport traceback...
    古佛青燈度流年閱讀 948評(píng)論 0 1
  • 1.什么是異常? 異常:不正常的情況 不正常的情況,在程序中,會(huì)有兩種體現(xiàn) 1.寫錯(cuò)代碼了!錯(cuò)誤...
    十維田園閱讀 279評(píng)論 0 0
  • 一個(gè)人的性格是在6歲之前形成的。在6歲之前,父母與孩子的關(guān)系會(huì)決定孩子的性格。性格決定命運(yùn),也就造就了孩子的...
    王朋彥閱讀 225評(píng)論 0 0
  • 冷風(fēng)一夜變紅黃,片片回家更匆忙。 折己愿作云衣裳,護(hù)持樹木不受傷。 2017.10.27云杉一伊春
    云杉_2e22閱讀 241評(píng)論 0 4