一個異常可以帶上參數,可作為輸出的異常信息參數。
你可以通過except語句來捕獲異常的參數,如下所示:
try:
正常的操作
......................
exceptExceptionType,Argument:
你可以在這輸出Argument的值...
變量接收的異常值通常包含在異常的語句中。在元組的表單中變量可以接收一個或者多個值。
元組通常包含錯誤字符串,錯誤數字,錯誤位置。
實例
以下為單個異常的實例:
#!/usr/bin/python
#-*-coding:UTF-8-*-
#定義函數
deftemp_convert(var):
try:
returnint(var)
exceptValueError,Argument:
print"參數沒有包含數字\n",Argument
#調用函數
temp_convert("xyz");
以上程序執行結果如下:
$pythontest.py
參數沒有包含數字
invalidliteralforint()withbase10:'xyz'
觸發異常
我們可以使用raise語句自己觸發異常
raise語法格式如下:
raise[Exception[,args[,traceback]]]
語句中Exception是異常的類型(例如,NameError)參數是一個異常參數值。該參數是可選的,如果不提供,異常的參數是"None"。
最后一個參數是可選的(在實踐中很少使用),如果存在,是跟蹤異常對象。
實例
一個異常可以是一個字符串,類或對象。Python的內核提供的異常,大多數都是實例化的類,這是一個類的實例的參數。
定義一個異常非常簡單,如下所示:
deffunctionName(level):
iflevel<1:
raiseException("Invalidlevel!",level)
#觸發異常后,后面的代碼就不會再執行
注意:為了能夠捕獲異常,"except"語句必須有用相同的異常來拋出類對象或者字符串。
例如我們捕獲以上異常,"except"語句如下所示:
try:
正常邏輯
except"Invalidlevel!":
觸發自定義異常
else:
其余代碼
實例
#!/usr/bin/python
#-*-coding:UTF-8-*-
#定義函數
defmye(level):
iflevel<1:
raiseException("Invalidlevel!",level)
#觸發異常后,后面的代碼就不會再執行
try:
mye(0)//觸發異常
except"Invalidlevel!":
print1
else:
print2
執行以上代碼,輸出結果為:
$pythontest.py
Traceback(mostrecentcalllast):
File"test.py",line11,in
mye(0)
File"test.py",line7,inmye
raiseException("Invalidlevel!",level)
Exception:('Invalidlevel!',0)
用戶自定義異常
通過創建一個新的異常類,程序可以命名它們自己的異常。異常應該是典型的繼承自Exception類,通過直接或間接的方式。
以下為與RuntimeError相關的實例,實例中創建了一個類,基類為RuntimeError,用于在異常觸發時輸出更多的信息。
在try語句塊中,用戶自定義的異常后執行except塊語句,變量e是用于創建Networkerror類的實例。
classNetworkerror(RuntimeError):
def__init__(self,arg):
self.args=arg
在你定義以上類后,你可以觸發該異常,如下所示:
try:
raiseNetworkerror("Badhostname")
exceptNetworkerror,e:
printe.args
以上內容為大家介紹了Python的異常參數,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://www.dietsnews.net/