"""
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...