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