在Python中處理異常使用的是try-except代碼塊,try-except代碼塊放入讓python執(zhí)行的操作,同時告訴python程序如果發(fā)生了異常該怎么辦,try-except這個功能其實很多入門書籍中都放到了高級篇幅里,在入門的時候一般不會講這個使用,尤其是作為運維人員,如果你經(jīng)常寫shell,轉(zhuǎn)到python后估計也很少使用這個功能,這功能我覺得說明了shell和python的一個重要區(qū)別,因為python是一門真正的編程語言,像其它的編程語言php,java等都會提供異常捕獲功能,用這些程序?qū)懗龅拇a是要健壯性的,如果你閱讀一些其他人寫的程序代碼,尤其是一些socket編程方面的代碼,很多都是try…except…,有的還except好多個,來判斷各種各樣的情況,既然這個功能這么有用,我們就來盡快了解下看如何使用的吧。
第一我們先看看它的語法,語法很簡單,就是在try-except中放入你想要執(zhí)行的代碼塊,例如:、
1
2
3
4
|
try : somecode1 except 異常類型 / 名稱: somecode2 |
這是最簡單的一種情況,如果情況復雜可以使用多個except句子,例如:
1
2
3
4
5
6
7
8
|
try : somecode0 except 異常類型 / 名稱 1 : somecode1 except 異常 2 : somecode2 except 異常 3 : somecode3 |
try-except還有更高級的用法,加入else,finally等,今天我們不展開說了有興趣的可以自己深入研究下。
接下來我們來看一個簡單例子,讀寫文件我們經(jīng)常的操作,一個常見的問題就是找不到文件,或者文件名稱,路徑不正確,對這種情況,你就可以采用try-except代碼塊直觀的方式來處理了:
1
2
3
4
5
6
|
try : withopen(filename, 'r+' ) as fp: data = fp.read() exceptIOError: msg = 'sorry, can not read or write this ' + filename printmsg |
我們再看一個多except的例子,2個數(shù)字相減:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
loop = 1 while loop = = 1 : try : a = input ( '請輸入第一個數(shù)字> ' ) b = input ( '請輸入第二個數(shù)字 > ' ) exceptNameError: print "請輸入數(shù)字,不能輸入字母" continue exceptSyntaxError: print "請僅輸入一個數(shù)字." continue print a - b try : loop = input ( '按1再開始 > ' ) except (NameError,SyntaxError): loop = 0 |
以上二個例子就是最簡單的try-except的用法了,如果想要保證腳本的健壯性,后續(xù)可多用try-except代碼塊吧,這會讓你的代碼看起來更專業(yè)。