天天看點

python中invalid argument_python中的異常

每個異常都是一些類的執行個體,而執行個體可以被引發

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中。