每個異常都是一些類的執行個體,而執行個體可以被引發
2015年8月9日
21:14
使用raise語句可以引發異常 ,raise語句的一般格式為:raise Exception([value])
exception:異常類型,value:是一個指定異常相關細節的可選值。
exception:所有類的基類。
attributeError::特性引用 或指派失敗時發生。
IOerror:試圖打開不存在檔案時引發。
INDEXerror: 在使用序列中不存在的索引時引發。
keyerror:在使用映射中不存在的鍵時引發。
syntax:在代碼為錯誤形式時引發。
自定義異常類: 如何建立自己的異常類?隻要確定從exception類中繼承。
例:classsomecustom(exception)
定義新異常:要建立新異常,就定義父類為exception的新類
Class network(exception): pass
可用如下方式通過raise語句使用這個新異常:
RaiseNetworkError("can't find host"),用于引發一個異常。
為了捕捉異常并且做出一些處理,可以這樣調用重寫程式
Try:
Exception 。隻是個錯誤處理器。
Try:
X=
Y=
Except ZeroDivisionError
print(" ") 在這裡輸出 錯誤。
出現異常時,解釋器将停止執行try代碼塊中的語句,并尋找可比對該異常的except子句。如果找到,控制權就會傳遞給except子句中的第一條語句。執行完except子句後,控制權就會傳遞給出現在try-except代碼塊後的第一條語句。
raise [exception[,data]]
在Python中,要想引發異常,最簡單的形式就是輸入關鍵字raise,後跟要引發的異常的名稱。異常名稱辨別出具體的類:Python異常是那些類的對象。執行raise語句時,Python會建立指定的異常類的一個對象。raise語句還可指定對異常對象進行初始化的參數。為此,請在異常類的名稱後添加一個逗号以及指定的參數(或者由參數構成的一個元組)。
例:
try:
raise MyError #自己抛出一個異常
except MyError:
print 'a error'
raise ValueError,’invalid argument’
捕捉到的内容為:
type = VauleError
message = invalid argument
>
若要用一個塊來捕捉多個類型異常,那麼需要在except中将它們作為元組列出
except(1,2,3)
最後finally子句。它可用來在可能的異常後進行清理,它和try子句聯合使用。
finally子句和try子句聯合使用但是和except語句不同,finally不管try子句内部是否有異常發生,都會執行finally子句内的代碼。所有一般情況下,finally自己常常用于關閉檔案或者在Socket中。