1 syntaxerror: python直譯器語法錯誤,是唯一不是在執行時發生的異常。
2 檢測和處理異常
try語句有兩種主要形式:try-except 和 try-finally. 只能二選一。
乙個try語句可以對應乙個或多個except子句,但只能對應乙個finally子句。
try語句塊中異常發生點後的剩餘語句永遠不會到達。
except後面相當於乙個處理器,處理異常發生時應該怎麼做。
try-except語句可以連貫使用,這樣可以處理多種異常。
def safe_float(obj):
try:
retval = float(obj)
except valueerror:
retval = 'could not convert non-number to float'
except typeerror:
retval = 'object type cannot be converted to float'
return retval
這樣,safe_float()函式就可以分別處理valueerror和typeerror兩種異常了。
python2.5以後,對於keyboardinterrupt和systemexit兩個異常(not real error),從exception裡移出,和exception平級,這樣當使用如下的catch_all**時,就不比為這兩個異常建立額外的處理器。
try:
....
except exception, e:
#handle real errors
異常引數:異常引發後,它會被傳遞給異常處理器,作為附加幫助資訊,一般包含乙個指示錯誤原因的字串元組。
finally子句:finally子句是無論異常是否發生,是否捕捉都會執行的一段**。
try:
aexcept myexception:
belse:
cfinally:
d
上面這段**有兩種可能的執行順序:
try語句的巢狀:
ccfile = none
try:
tyr:
ccfile = open('cardata.txt', 'r')
txns = ccfile.readlines()
except ioerror:
log.write('no txns this month\n')
finally:
if ccfile:
ccfile.close()
這樣寫的好處是,當readlines呼叫失敗時,異常處理會去繼續執行except中的子句,並且在finally子句中會去嘗試關閉檔案。
乙個需要注意的地方是:如果finally中的**引發了另乙個異常或由於return, break, continue語法而終止,原來的異常將會丟失而無法重新引發。
後面會接著講到 with語句等。
python錯誤和異常
1 語法錯誤 syntax errors 語法錯誤,也就是解析時錯誤。當我們寫出不符合python語法 時,在解析時會報syntaxerror,並且會顯示出錯的那一行,並用小箭頭知名指明最早探測到錯誤的位置。如 while ture file line 1 while ture syntaxerro...
Python 錯誤和異常
for i in range 10 print i for i in range 10 syntaxerror invalid syntax python的語法分析器完成,檢測到錯誤所在的檔案和行號,以向上箭頭標記錯誤位置,最後顯示錯誤型別 當程式檢測到乙個錯誤,直譯器就無法繼續執行下去,丟擲異常,...
Python錯誤和異常
語法錯誤是指python編譯器在編譯時出現的錯誤,語法分析器會指出出錯的一行並在最新出現問題的位置標記乙個小箭頭及錯誤提示 while true print hello world file haha.py line 1 while true syntaxerror invalid syntax 函...