錯誤與例外概念
#錯誤:
1.文法錯誤:程式碼不符合解釋器或編譯器語法
2.邏輯錯誤:不完整或不合法輸入或計算出現問題
#異常:執行過程中出現萬體導致程式無法執行
# 1.程式遇到邏輯或演算法問題
2.運作過程中電腦錯誤(記憶體不夠或IO錯誤)
錯誤與異常差異
##錯誤:
程式碼執行前的語法或邏輯錯誤,
語法錯誤在執行前修改,邏輯錯誤無法修改
異常分為兩個步驟:
1.異常產生,檢查到錯誤且解釋器認為是異常,拋出異常;
2.異常處理,截獲異常,忽略或終止程序處理異常
Python 常見錯誤
常見錯誤:ipython下
1. a : NameError
在沒有定義變數的時候直接引用
2. if True : SyntaxError
語法錯誤
3. f = open('1.txt') : IOError
試圖開啟一個不存在的檔案的時候
#o # 嘗試開啟一個不存在的檔案的時候# 4. 10/0 : ZeroDivisionError
5. a = int('dd') : ValueError
進行強制類型轉換的時候遇到的錯誤
try- -except異常處理(1)
try-except:異常處理
try: try_suite except Exception [, e]: exception_block
1.try用來捕捉try_suite中的錯誤,並且將錯誤交給except處理
# 2.except用來處理異常,如果異常處理和設定捕獲異常一致,使用exception_block處理異常
例:
try: a except Exception, e: print e
try-except捕獲異常分析:
#Case 1:
try: undef except: print 'catch an except'
Case 2:
try: if undef except: print 'catch an except'
case 1:可以捕獲異常,因為是運行時錯誤
case 2:不能捕獲異常,因為是語法錯誤,運行前錯誤
Case 3:
try: undef except NameError, e: print 'catch an except', e Case 4: try: undef except IOError, e: print 'catch an except', e
case 3:可以捕獲異常,因為設定捕獲NameError異常
case 4:不能捕獲異常,因為設定IOError,不會處理NameError
try--except異常處理(2)
try-except:處理多個例外
try: try_suite except Exception1 [e]: exception_block1 except Exception2 [e]: exception_block2 except ExceptionN [e]: exception_blockN
try-except--else使用
try: try_suite except Exception1 [e]: exception_block1 else: none_exception
如果沒有異常,執行else語句中的代碼
try--finally語句
try-finally語句:
try: try_suite finally: do_finally
1.如果try語句沒有捕獲錯誤,程式碼執行do_finally語句
2.如果try語句捕獲錯誤,程式首先執行do_finally語句,然後將捕獲到的錯誤交給python解釋器處理
#try-finally語句:
規則:try-finally無論是否偵測到異常,都會執行finally程式碼
作用:為例外處理事件提供清理機制,用來關閉檔案或釋放系統資源
try-except-finally使用:
try: try_suite except: do_except finally: do_finally
1.若try語句沒有捕獲異常,執行完try代碼段後,執行finally
2.若try捕獲異常,首先執行except處理錯誤,然後執行finally
try-except-else-finally使用:try:
try_suite
except:
do_except
else:
do_else
finally:
do_finally
1.若try語句沒有捕獲異常,執行完try代碼塊後,執行else代碼塊,最後執行finally
2.若try捕獲異常,先執行except處理錯誤,然後執行finally
#with語句
with語句:
##with context [as var]: with_suite1.with語句用來取代try-except-finally語句,是程式碼更簡潔;2.context表達式回傳是一個物件;3.var用來保存context返回對象,單一返回值或元祖;4.with_suite使用var變數來對context返回對象進行操作……
###raise語句######raise語句用於主動拋出例外######語法格式:raise [ exception [, args]]######exception: 異常類別######args: 描述異常訊息的元組######例:###raise TypeError raise TypeError, 'Test Error' raise IOError, 'File Not Exist'###assert語句### ###斷言語句:assert語句用來偵測表達式是否為真,如果為假,引發AssertionError錯誤;######語法格式:assert expression [, args]#######expression:表達式######args:判斷條件的描述資訊#####例:###
assert 7==6 assert 0, 'Test Error'###Python標準與自訂例外狀況#####標準例外:python內建異常,程式執行前就已經存在######自訂異常:######1.python允許自訂異常,用於描述python中沒有涉及的異常情況######2.自訂異常必須繼承Exception類別######3.自訂例外只能主動觸發######自訂例外範例:###
class FileError(IOError): pass raise FileError, 'Test FileError' class CustomError(Exception): def __init__(self, info): Exception.__init__(self) self.errorinfo = info def __str__(self): return 'CustomError: %s' % self.errorinfo try: raise CustomError('test CustomError') except CustomError, e: print 'Error Info : %s' % e###相關推薦:《###Python教學###》# ##
以上是python異常與錯誤區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!