日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

如何在Python中進行異常處理_python

作者:一只懐壞旭 ? 更新時間: 2022-05-07 編程語言

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

Python中使用用異常對象(exception object)表示異常情況,當程序運行遇到錯誤后,就會觸發發異常。相信大家在編碼是都會遇到這種情況,那么如果異常對象并未被處理或捕捉,程序就會用報錯然后終止執行。

1、raise語句

Python中的raise 關鍵字用于觸發發一個異常,和我們熟悉的Java中的throw關鍵字相同,

如下所示:

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

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

如下:

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

傳遞異常:

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

>>>?? ?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 '除數不能為0'

1、捕捉多個異常

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

如下:

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

為了捕獲多個異常,除了聲明多個except語句之外,還可以在一個except語句之后將多個異常作為元組列出來即可:

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

2、獲取異常信息

每個異常都會有一些異常信息,我們可以把這些異常打印出來查看,便于修改代碼:

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

三、finally子句

Java中一樣,finally不管try子句內部是否有異常發生,都會執行finally子句內的代碼。一般使用時,finally常常使用用于關閉文件或者在Socket中。

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

原文鏈接:https://blog.csdn.net/qq_45691220/article/details/123307366

欄目分類
最近更新