一個(gè)異??梢詭蠀?shù),可作為輸出的異常信息參數(shù)。
你可以通過except語句來捕獲異常的參數(shù),如下所示:
try:
正常的操作
......................
exceptExceptionType,Argument:
你可以在這輸出Argument的值...
變量接收的異常值通常包含在異常的語句中。在元組的表單中變量可以接收一個(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ù)沒有包含數(shù)字\n",Argument
#調(diào)用函數(shù)
temp_convert("xyz");
以上程序執(zhí)行結(jié)果如下:
$pythontest.py
參數(shù)沒有包含數(shù)字
invalidliteralforint()withbase10:'xyz'
觸發(fā)異常
我們可以使用raise語句自己觸發(fā)異常
raise語法格式如下:
raise[Exception[,args[,traceback]]]
語句中Exception是異常的類型(例如,NameError)參數(shù)是一個(gè)異常參數(shù)值。該參數(shù)是可選的,如果不提供,異常的參數(shù)是"None"。
最后一個(gè)參數(shù)是可選的(在實(shí)踐中很少使用),如果存在,是跟蹤異常對(duì)象。
實(shí)例
一個(gè)異??梢允且粋€(gè)字符串,類或?qū)ο?。Python的內(nèi)核提供的異常,大多數(shù)都是實(shí)例化的類,這是一個(gè)類的實(shí)例的參數(shù)。
定義一個(gè)異常非常簡單,如下所示:
deffunctionName(level):
iflevel<1:
raiseException("Invalidlevel!",level)
#觸發(fā)異常后,后面的代碼就不會(huì)再執(zhí)行
注意:為了能夠捕獲異常,"except"語句必須有用相同的異常來拋出類對(duì)象或者字符串。
例如我們捕獲以上異常,"except"語句如下所示:
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)
用戶自定義異常
通過創(chuàng)建一個(gè)新的異常類,程序可以命名它們自己的異常。異常應(yīng)該是典型的繼承自Exception類,通過直接或間接的方式。
以下為與RuntimeError相關(guān)的實(shí)例,實(shí)例中創(chuàng)建了一個(gè)類,基類為RuntimeError,用于在異常觸發(fā)時(shí)輸出更多的信息。
在try語句塊中,用戶自定義的異常后執(zhí)行except塊語句,變量e是用于創(chuàng)建Networkerror類的實(shí)例。
classNetworkerror(RuntimeError):
def__init__(self,arg):
self.args=arg
在你定義以上類后,你可以觸發(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://www.em-kal.com/