<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Python中遇到錯誤後,會引發異常。
Python中使用異常物件來表示異常情況。
如果異常物件未被處理或者捕捉,程式就會用所謂的回溯(traceback)來終止執行。
下面是一個例子:
def func1(): raise Exception if __name__ == "__main__": func1()
執行之後報錯:
(venv) E:Codespython_everythingbegining-pythonsrc 8>list8-2.py Traceback (most recent call last): File "E:Codespython_everythingbegining-pythonsrc 8list8-2.py", line 19, in <module> func1() File "E:Codespython_everythingbegining-pythonsrc 8list8-2.py", line 15, in func1 raise Exception Exception
異常有不同的型別,Exception是基礎類,下面還有各種子類:
+-- 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
還可以通過繼承Exception來實現自己的類:
class SomeError(Exception): pass def func2(): raise SomeError if __name__ == "__main__": func2()
異常可以被捕捉,需要使用try...except...語句:
class SomeError(Exception): pass def func2(): raise SomeError if __name__ == "__main__": try: func2() except SomeError: print("Some error happened")
這裡捕捉到了引數,所以就不會回溯:
(venv) E:Codespython_everythingbegining-pythonsrc 8>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就沒有被捕獲,所以還是會回溯:
(venv) E:Codespython_everythingbegining-pythonsrc 8>list8-3.py Traceback (most recent call last): File "E:Codespython_everythingbegining-pythonsrc 8list8-3.py", line 27, in <module> func1() File "E:Codespython_everythingbegining-pythonsrc 8list8-3.py", line 15, in func1 raise Exception Exception
如果沒有出現異常,則會繼續往下執行,但是這裡可以有else語句來執行沒有異常時可以執行的語句,使整個邏輯更通順:
if __name__ == "__main__": try: print("No exception") except SomeError: print("Some error happened") else: print("No error happened")
結果如下:
(venv) E:Codespython_everythingbegining-pythonsrc 8>list8-3.py No exception No error happened
但是有時即使發生了無法捕捉的異常,也想要執行一些語句,這個時候就可以使用finally語句:
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...這樣的語句來代替if...else..語句。
以上就是Python異常物件異常捕捉及Exception基礎類的詳細內容,更多關於Python物件Exception類異常捕捉的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45