python中異常捕獲方法詳解
在Python中處理異常使用的是try-except代碼塊,try-except代碼塊放入讓python執(zhí)行的操作,同時(shí)告訴python程序如果發(fā)生了異常該怎么辦,try-except這個(gè)功能其實(shí)很多入門(mén)書(shū)籍中都放到了高級(jí)篇幅里,在入門(mén)的時(shí)候一般不會(huì)講這個(gè)使用,尤其是作為運(yùn)維人員,如果你經(jīng)常寫(xiě)shell,轉(zhuǎn)到python后估計(jì)也很少使用這個(gè)功能,這功能我覺(jué)得說(shuō)明了shell和python的一個(gè)重要區(qū)別,因?yàn)閜ython是一門(mén)真正的編程語(yǔ)言,像其它的編程語(yǔ)言php,java等都會(huì)提供異常捕獲功能,用這些程序?qū)懗龅拇a是要健壯性的,如果你閱讀一些其他人寫(xiě)的程序代碼,尤其是一些socket編程方面的代碼,很多都是try…except…,有的還except好多個(gè),來(lái)判斷各種各樣的情況,既然這個(gè)功能這么有用,我們就來(lái)盡快了解下看如何使用的吧。
第一我們先看看它的語(yǔ)法,語(yǔ)法很簡(jiǎn)單,就是在try-except中放入你想要執(zhí)行的代碼塊,例如:、
try: somecode1 except 異常類(lèi)型/名稱(chēng): somecode2
這是最簡(jiǎn)單的一種情況,如果情況復(fù)雜可以使用多個(gè)except句子,例如:
try: somecode0 except 異常類(lèi)型/名稱(chēng)1: somecode1 except 異常2: somecode2 except 異常3: somecode3
try-except還有更高級(jí)的用法,加入else,finally等,今天我們不展開(kāi)說(shuō)了有興趣的可以自己深入研究下。
接下來(lái)我們來(lái)看一個(gè)簡(jiǎn)單例子,讀寫(xiě)文件我們經(jīng)常的操作,一個(gè)常見(jiàn)的問(wèn)題就是找不到文件,或者文件名稱(chēng),路徑不正確,對(duì)這種情況,你就可以采用try-except代碼塊直觀(guān)的方式來(lái)處理了:
try: withopen(filename, 'r+') as fp: data = fp.read() exceptIOError: msg = 'sorry, can not read or write this ' + filename printmsg
我們?cè)倏匆粋€(gè)多except的例子,2個(gè)數(shù)字相減:
loop = 1 while loop == 1: try: a = input('請(qǐng)輸入第一個(gè)數(shù)字> ') b = input('請(qǐng)輸入第二個(gè)數(shù)字 > ') exceptNameError: print "請(qǐng)輸入數(shù)字,不能輸入字母" continue exceptSyntaxError: print "請(qǐng)僅輸入一個(gè)數(shù)字." continue print a - b try: loop = input('按1再開(kāi)始 > ') except (NameError,SyntaxError): loop = 0
以上二個(gè)例子就是最簡(jiǎn)單的try-except的用法了,如果想要保證腳本的健壯性,后續(xù)可多用try-except代碼塊吧,這會(huì)讓你的代碼看起來(lái)更專(zhuān)業(yè)。
相關(guān)文章
Python實(shí)現(xiàn)PING命令的示例代碼
本文主要介紹了Python實(shí)現(xiàn)PING命令的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Django3.0 異步通信初體驗(yàn)(小結(jié))
這篇文章主要介紹了Django3.0 異步通信初體驗(yàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Python使用Matplotlib實(shí)現(xiàn)雨點(diǎn)圖動(dòng)畫(huà)效果的方法
這篇文章主要介紹了Python使用Matplotlib實(shí)現(xiàn)雨點(diǎn)圖動(dòng)畫(huà)效果的方法,結(jié)合實(shí)例形式分析了win10安裝ffmpeg及animation函數(shù)的使用相關(guān)操作技巧,需要的朋友可以參考下2017-12-12python PrettyTable模塊的安裝與簡(jiǎn)單應(yīng)用
prettyTable 是一款很簡(jiǎn)潔但是功能強(qiáng)大的第三方模塊,主要是將輸入的數(shù)據(jù)轉(zhuǎn)化為格式化的形式來(lái)輸出,這篇文章主要介紹了python PrettyTable模塊的安裝與簡(jiǎn)單應(yīng)用,感興趣的小伙伴們可以參考一下2019-01-01Python實(shí)現(xiàn)端口流量轉(zhuǎn)發(fā)的示例代碼
端口流量轉(zhuǎn)發(fā)(Port Forwarding)是一種網(wǎng)絡(luò)通信技術(shù),用于將特定的網(wǎng)絡(luò)流量從一個(gè)端口或網(wǎng)絡(luò)地址轉(zhuǎn)發(fā)到另一個(gè)端口或地址,它在網(wǎng)絡(luò)中扮演著一個(gè)非常重要的角色,在Python語(yǔ)言中實(shí)現(xiàn)端口轉(zhuǎn)發(fā)非常容易,文中有相關(guān)的代碼示例,需要的朋友可以參考下2023-11-11Python 實(shí)現(xiàn)list,tuple,str和dict之間的相互轉(zhuǎn)換
這篇文章主要介紹了Python 實(shí)現(xiàn)list,tuple,str和dict之間的相互轉(zhuǎn)換,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03Python實(shí)現(xiàn)大樂(lè)透號(hào)碼隨機(jī)生成
全國(guó)有很多彩民,其中購(gòu)買(mǎi)最多的彩種分別是體彩大樂(lè)透和福彩雙色球。本篇文章將介紹Python實(shí)現(xiàn)彩票自由的全流程:隨機(jī)選取號(hào)碼+查看是否中獎(jiǎng),需要的可以參考一下2022-05-05python單例模式原理與創(chuàng)建方法實(shí)例分析
這篇文章主要介紹了python單例模式原理與創(chuàng)建方法,結(jié)合實(shí)例形式分析了Python單例模式的概念、原理、定義、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-10-10