本文實(shí)例講述了Python異常處理操作。分享給大家供大家參考,具體如下:
一、異常處理的引入
>>>whileTrue:try:x = int(input("Please enter a number: "))breakexceptValueError:print("Oops! That was no valid number. Try again ")Please enter a number: yOops!That was no valid number.Try againPlease enter a number:1.3Oops!That was no valid number.Try againPlease enter a number:5二、try語句工作方式
1、執(zhí)行try子句(在關(guān)鍵字try和關(guān)鍵字except之間的語句)
2、如果沒有異常發(fā)生,忽略except子句,try子句執(zhí)行后結(jié)束。
3、如果在執(zhí)行try子句的過程中發(fā)生了異常,那么try子句余下的部分將被忽略。如果異常的類型和 except 之后的名稱相符,那么對應(yīng)的except子句將被執(zhí)行。最后執(zhí)行 try 語句之后的代碼。
4、如果一個異常沒有與任何的except匹配,那么這個異常將會傳遞給上層的try中。
5、一個 try 語句可能包含多個except子句,分別來處理不同的特定的異常。最多只有一個分支會被執(zhí)行。
6、處理程序?qū)⒅会槍?yīng)的try子句中的異常進(jìn)行處理。
7、一個except子句可以同時處理多個異常,這些異常將被放在一個括號里成為一個元組,例如:
except (RuntimeError, TypeError, NameError): pass
8、最后一個except子句可以忽略異常的名稱,它將被當(dāng)作通配符使用。你可以使用這種方法打印一個錯誤信息,然后再次把異常拋出。
>>>import os>>>try:f = open('myfile.txt')s = f.readline()i = int(s.strip())exceptOSErroras err:print("OS error: {0}".format(err))exceptValueError:print("Could not convert data to an integer.")except:print("Unexpected error:", sys.exc_info()[0])raiseOS error:[Errno2]No such file or directory:'myfile.txt'三、else子句
try except 語句還有一個可選的else子句,如果使用這個子句,那么必須放在所有的except子句之后。這個子句將在try子句沒有發(fā)生任何異常的時候執(zhí)行。
>>>try:f = open('a.txt','r')exceptIOError:print('cannot open')except:print('other ERR')else:print('file close')f.close()cannot open使用 else 子句比把所有的語句都放在 try 子句里面要好,這樣可以避免一些意想不到的、而except又沒有捕獲的異常。
四、異常處理try中函數(shù)
異常處理并不僅僅處理那些直接發(fā)生在try子句中的異常,而且還能處理子句中調(diào)用的函數(shù)(甚至間接調(diào)用的函數(shù))里拋出的異常。
>>>def this_fails():x =1/0>>>try:this_fails()exceptZeroDivisionErroras err:print('Handling run-time error:', err)Handling run-time error: division by zero更多Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python入門與進(jìn)階經(jīng)典教程》、《Python字符串操作技巧匯總》、《Python列表(list)操作技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》及《Python文件與目錄操作技巧匯總》
新聞熱點(diǎn)
疑難解答
圖片精選