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