Python異常對(duì)象Exception基礎(chǔ)類異常捕捉
異常對(duì)象
Python中遇到錯(cuò)誤后,會(huì)引發(fā)異常。
Python中使用異常對(duì)象來(lái)表示異常情況。
如果異常對(duì)象未被處理或者捕捉,程序就會(huì)用所謂的回溯(traceback)來(lái)終止執(zhí)行。
下面是一個(gè)例子:
def func1(): raise Exception if __name__ == "__main__": func1()
執(zhí)行之后報(bào)錯(cuò):
(venv) E:\Codes\python_everything\begining-python\src\08>list8-2.py Traceback (most recent call last): File "E:\Codes\python_everything\begining-python\src\08\list8-2.py", line 19, in <module> func1() File "E:\Codes\python_everything\begining-python\src\08\list8-2.py", line 15, in func1 raise Exception Exception
異常有不同的類型,Exception是基礎(chǔ)類,下面還有各種子類:
+-- Exception +-- StopIteration +-- StandardError | +-- BufferError | +-- ArithmeticError | | +-- FloatingPointError | | +-- OverflowError | | +-- ZeroDivisionError | +-- AssertionError | +-- AttributeError | +-- EnvironmentError | | +-- IOError | | +-- OSError | | +-- WindowsError (Windows) | | +-- VMSError (VMS) | +-- EOFError | +-- ImportError | +-- LookupError | | +-- IndexError | | +-- KeyError | +-- MemoryError | +-- NameError | | +-- UnboundLocalError | +-- ReferenceError | +-- RuntimeError | | +-- NotImplementedError | +-- SyntaxError | | +-- IndentationError | | +-- TabError | +-- SystemError | +-- TypeError | +-- ValueError | +-- UnicodeError | +-- UnicodeDecodeError | +-- UnicodeEncodeError | +-- UnicodeTranslateError
還可以通過(guò)繼承Exception來(lái)實(shí)現(xiàn)自己的類:
class SomeError(Exception): pass def func2(): raise SomeError if __name__ == "__main__": func2()
異常捕捉
異??梢员徊蹲剑枰褂胻ry...except...語(yǔ)句:
class SomeError(Exception): pass def func2(): raise SomeError if __name__ == "__main__": try: func2() except SomeError: print("Some error happened")
這里捕捉到了參數(shù),所以就不會(huì)回溯:
(venv) E:\Codes\python_everything\begining-python\src\08>list8-3.py Some error happened
但是如果是其它的異常:
def func1(): raise Exception class SomeError(Exception): pass def func2(): raise SomeError if __name__ == "__main__": try: func1() except SomeError: print("Some error happened")
這里的Exception就沒(méi)有被捕獲,所以還是會(huì)回溯:
(venv) E:\Codes\python_everything\begining-python\src\08>list8-3.py Traceback (most recent call last): File "E:\Codes\python_everything\begining-python\src\08\list8-3.py", line 27, in <module> func1() File "E:\Codes\python_everything\begining-python\src\08\list8-3.py", line 15, in func1 raise Exception Exception
如果沒(méi)有出現(xiàn)異常,則會(huì)繼續(xù)往下執(zhí)行,但是這里可以有else語(yǔ)句來(lái)執(zhí)行沒(méi)有異常時(shí)可以執(zhí)行的語(yǔ)句,使整個(gè)邏輯更通順:
if __name__ == "__main__": try: print("No exception") except SomeError: print("Some error happened") else: print("No error happened")
結(jié)果如下:
(venv) E:\Codes\python_everything\begining-python\src\08>list8-3.py No exception No error happened
但是有時(shí)即使發(fā)生了無(wú)法捕捉的異常,也想要執(zhí)行一些語(yǔ)句,這個(gè)時(shí)候就可以使用finally語(yǔ)句:
def func1(): raise Exception class SomeError(Exception): pass def func2(): raise SomeError if __name__ == "__main__": try: func1() except SomeError: print("Some error happened") else: print("No error happened") finally: print("Do something")
Python中更傾向于使用try...except...這樣的語(yǔ)句來(lái)代替if...else..語(yǔ)句。
以上就是Python異常對(duì)象異常捕捉及Exception基礎(chǔ)類的詳細(xì)內(nèi)容,更多關(guān)于Python對(duì)象Exception類異常捕捉的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Pandas sample隨機(jī)抽樣的實(shí)現(xiàn)
隨機(jī)抽樣,是統(tǒng)計(jì)學(xué)中常用的一種方法,本文主要介紹了Pandas sample隨機(jī)抽樣的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06python選取特定列 pandas iloc,loc,icol的使用詳解(列切片及行切片)
今天小編就為大家分享一篇python選取特定列 pandas iloc,loc,icol的使用詳解(列切片及行切片),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08Python連接HDFS實(shí)現(xiàn)文件上傳下載及Pandas轉(zhuǎn)換文本文件到CSV操作
這篇文章主要介紹了Python連接HDFS實(shí)現(xiàn)文件上傳下載及Pandas轉(zhuǎn)換文本文件到CSV操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06python如何創(chuàng)建TCP服務(wù)端和客戶端
這篇文章主要為大家詳細(xì)介紹了python如何創(chuàng)建TCP服務(wù)端和客戶端,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08Python實(shí)現(xiàn)調(diào)用攝像頭拍攝照片
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)調(diào)用攝像頭拍攝照片以及郵箱收集功能,文中的示例代碼講解詳細(xì),感興趣的可以動(dòng)手嘗試一下2022-06-06Python(TensorFlow框架)實(shí)現(xiàn)手寫數(shù)字識(shí)別系統(tǒng)的方法
這篇文章主要介紹了Python(TensorFlow框架)實(shí)現(xiàn)手寫數(shù)字識(shí)別系統(tǒng)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05使用IPython下的Net-SNMP來(lái)管理類UNIX系統(tǒng)的教程
這篇文章主要介紹了使用IPython下的Net-SNMP來(lái)管理類UNIX系統(tǒng)的教程,本文來(lái)自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下2015-04-04Python 程序報(bào)錯(cuò)崩潰后如何倒回到崩潰的位置(推薦)
這篇文章主要介紹了Python 程序報(bào)錯(cuò)崩潰后如何倒回到崩潰的位置,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06