python異常基礎

2021-06-19 03:36:39 字數 2806 閱讀 1432

"""

try後面至少要有一項,亦可以選擇 /except/else/finally中的任意組合

assert語句一般用於開發時對程式條件的驗證,只有當內建_debug_為true時,assert語句才有效。當python指令碼以-o選項編譯成為位元組碼檔案時,assert 語句將被移除。

except 帶引數: 老版本的python,except語句寫作"except exception, e",python 2.6後應寫作"except exception as e"。

attributeerror 呼叫不存在的方法引發的異常

eoferror 遇到檔案末尾引發的異常

importerror 匯入模組出錯引發的異常

indexerror 列表越界引發的異常

ioerror i/o操作引發的異常,如開啟檔案出錯等

keyerror 使用字典中不存在的關鍵字引發的異常

nameerror 使用不存在的變數名引發的異常

taberror 語句塊縮排不正確引發的異常

valueerror 搜尋列表中不存在的值引發的異常

zerodivisionerror 除數為零引發的異常

"""try:

statment=1

assert statement==0

statement=2

raise exception

except exception:

except typeerror:

except indexerror,error:

except exception,e:

print e

statement="e is the args of exception, give more detail of exception"

except:

statement="caught all kinds of error"

traceback.print_exc()

else:

statement_else="if no error occur,this statement would run"

#這句話通常不是必須的,因為可以將 這句話放在可能觸發的異常的語句之後,如果沒有異常這句話同樣會執行

finally:

statement_finally="always run"

#不管異常發不發生,這句話總要執行, 歧義在於,這與直接放在最後面執行的語句有什麼區別?

#這個在於提示作用,如果有異常出現,放在後面的語句將執行不了,那麼try...體重的finally仍然可以執行

print statement

try:

"do something"

finally:

"tear things down"

"set things up可以是開啟乙個檔案,tear things down為關閉檔案。try-finally語句保證tear things down總被執行,即使do something丟擲異常。"

# 然而如果要經常性的對檔案進行操作,可以將其寫成庫函式,例如:

def controlled_execution(callback):

"set things up"

try:

callback(thing)

finally:

"tear things down"

def my_function(thing):

"do something"

controlled_execution(my_function)

# 需要不同功能時,需要定義新函式,然後傳入controlled_execution,稍微有些繁瑣。

# 通過with,進一步簡化上述操作。

class controlled_execution:

def __enter__(self):

"set things up"

return thing

def __exit__(self, type, value, traceback):

"tear things down"

with controlled_execution() as thing:

"some code"

# with語句,執行controlled_execution中的__enter__方法,做相應的準備工作,並將返回值付給as後變數,即thing。

# 執行**體,不論**體是否發生異常,都會執行controlled_execution中的__exit__方法進行收尾工作。

# 另外__exit__可以通過返回true來抑制異常傳播。例如,吞下型別錯誤異常,放行其它異常。

def __exit__(self, type, value, traceback):

return isinstance(value, typeerror)

class controlled_execution:

def __enter__(self):

print "starting with block"

return self

def __exit__(self, type, value, traceback):

print "exited normally"

def message(self, args):

print 'running'

print args

with controlled_execution() as action:

action.message("test")

Python基礎 異常

google c style中禁止使用異常。python中也有異常,就簡單分享一下。1 0就會產生異常。按自己的方式出錯 raise語句 raise exception traceback most recent all last 自定義異常類 class somecustomexception e...

python基礎 異常

處理異常的目的是保證程式在出現錯誤的時候,可以繼續執行下去,而不會立即終止 語法 try 塊 可能會出錯的語句 except 異常型別 as異常名 塊 出現錯誤的處理方式 except 異常型別 as 異常名 塊 出現錯誤的處理方式 else 塊 沒有錯誤時執行的語句 finally 塊 是否有異常...

Python基礎 異常

python中遇到錯誤後,會引發異常。python中使用異常物件來表示異常情況。如果異常物件未被處理或者捕捉,程式就會用所謂的回溯 traceback 來終止執行。下面是乙個例子 def func1 raise exception if name main func1 執行之後報錯 venv e c...