最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在Python中進(jìn)行異常處理

 更新時(shí)間:2022年03月07日 11:45:37   作者:一只懐壞旭  
這篇文章主要介紹了如何在Python中進(jìn)行異常處理,Python中使用用異常對(duì)象(exception object)表示異常情況,當(dāng)程序運(yùn)行遇到錯(cuò)誤后,就會(huì)觸發(fā)發(fā)異常,下文關(guān)于異常處理的相關(guān)內(nèi)容,需要的小伙伴可以參考一下

一、拋出異常和自定義異常

Python中使用用異常對(duì)象(exception object)表示異常情況,當(dāng)程序運(yùn)行遇到錯(cuò)誤后,就會(huì)觸發(fā)發(fā)異常。相信大家在編碼是都會(huì)遇到這種情況,那么如果異常對(duì)象并未被處理或捕捉,程序就會(huì)用報(bào)錯(cuò)然后終止執(zhí)行。

1、raise語(yǔ)句

Python中的raise 關(guān)鍵字用于觸發(fā)發(fā)一個(gè)異常,和我們熟悉的Java中的throw關(guān)鍵字相同,

如下所示:

>>>?? ?def ThorwErr():
>>> ?? ? raise Exception("拋出一個(gè)異常")
>>>?? ?# Exception: 拋出一個(gè)異常
>>>?? ?ThorwErr()

如上raise關(guān)鍵字后面是拋出是一個(gè)通用的異常類型(Exception),但是在實(shí)際編碼中我們拋出的異常越詳細(xì)越好。Python在exceptions模塊內(nèi)建了很多的異常類型,我們用dir函數(shù)來(lái)查看exceptions中都有哪些的異常類型,

如下:

>>>?? ?import exceptions
>>>?? ?print dir(exceptions)

傳遞異常:

捕捉到了異常,要想重新引發(fā)它(傳遞異常),我們可以使用不帶參數(shù)的raise語(yǔ)句:

>>>?? ?class MuffledCalculator:
>>> ?? ? muffled = False
>>>?? ?def calc(self,expr):
>>>?? ? ? ?try:
>>> ?? ? ? ? return eval(expr)
>>> ?? ? ? except ZeroDivisionError:
>>> ??? ? ? ?if self.muffled:
>>> ? ?? ? ? ? print 'Division by zero is illegal'
>>> ??? ? ? ?else:
>>> ??? ? ? ? ?raise

2、自定義異常類型

Python中我們也可以定義自己的特殊異常類型,只需要繼承Exception類即可,這里的繼承既可以是直接繼承,也可以是間接繼承。

>>>?? ?class selfExceptions(Exception):
>>>?? ??? ?pass

二、捕捉異常

java中的try/catch相似,在Python中使用try/except捕捉異常

try:
? print 2/0
except ZeroDivisionError:
? print '除數(shù)不能為0'

1、捕捉多個(gè)異常

使用except語(yǔ)句時(shí)我們只能捕捉其后聲明了的那個(gè)異常類型,如果代碼可能會(huì)拋出的是其他類型的異常,這時(shí)就需要再增加一個(gè)except語(yǔ)句了,

如下:

try:
? print 2/'0'
except ZeroDivisionError:
? print '除數(shù)不能為0'
except Exception:
? print '其他類型異常'

為了捕獲多個(gè)異常,除了聲明多個(gè)except語(yǔ)句之外,還可以在一個(gè)except語(yǔ)句之后將多個(gè)異常作為元組列出來(lái)即可:

try:
? print 2/'0'
except (ZeroDivisionError,Exception):
? print '發(fā)生了一個(gè)異常'

2、獲取異常信息

每個(gè)異常都會(huì)有一些異常信息,我們可以把這些異常打印出來(lái)查看,便于修改代碼:

try:
? print 2/'0'
except (ZeroDivisionError,Exception) as e:
? # unsupported operand type(s) for /: 'int' and 'str'
? print e

三、finally子句

Java中一樣,finally不管try子句內(nèi)部是否有異常發(fā)生,都會(huì)執(zhí)行finally子句內(nèi)的代碼。一般使用時(shí),finally常常使用用于關(guān)閉文件或者在Socket中。

try:
? print 2/'0'
except (ZeroDivisionError,Exception):
? print '發(fā)生了一個(gè)異常'
finally:
? print '不管是否發(fā)生異常都執(zhí)行'

到此這篇關(guān)于如何在Python中進(jìn)行異常處理的文章就介紹到這了,更多相關(guān)Python中進(jìn)行異常處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

扎赉特旗| 新营市| 金平| 岢岚县| 榆树市| 连云港市| 尉氏县| 洞头县| 东丽区| 马龙县| 汝南县| 舞阳县| 武平县| 金寨县| 宽城| 新乐市| 扶沟县| 托里县| 英山县| 金山区| 宝兴县| 灯塔市| 安顺市| 漳浦县| 岳普湖县| 汝城县| 石泉县| 梅河口市| 玉门市| 安多县| 广宗县| 高唐县| 河池市| 山阴县| 桦川县| 蒙自县| 正镶白旗| 中牟县| 双柏县| 迭部县| 忻州市|