簡體   English   中英

為什么我們應該使用Exception作為超類,為什么不使用BaseException

[英]why should we use Exception as a superclass, why not BaseException

在python中,每當我們編寫用戶定義的異常時,我們都必須從類Exception擴展它。 我的問題是為什么我們不能從BaseException擴展它,它是異常層次結構的超類,而Exception也是BaseException子類。

BaseException包括KeyboardInterruptSystemExit類的東西,它們使用異常機制,但是大多數人不應該抓住它。 如果您熟悉它,它類似於Java中的Throwable 直接從BaseException派生的東西通常用於在執行finally塊和上下文管理器__exit__方法時關閉系統以釋放資源。

根據Python2文檔 ,有四個例外是BaseException衍生物:

BaseException
 +-- SystemExit
 +-- KeyboardInterrupt
 +-- GeneratorExit
 +-- Exception

Exception的三個實際上並不是錯誤,這意味着通常你不想捕獲它們就好像它們是錯誤一樣。 在Python2.5中添加了BaseException (在此之前,沒有BaseException ,其他異常是從Exception子類化的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM