![](/img/trans.png)
[英]Why is it recommended to derive from Exception instead of BaseException class in Python?
[英]why should we use Exception as a superclass, why not BaseException
在python中,每當我們編寫用戶定義的異常時,我們都必須從類Exception
擴展它。 我的問題是為什么我們不能從BaseException
擴展它,它是異常層次結構的超類,而Exception
也是BaseException
子類。
BaseException
包括KeyboardInterrupt
和SystemExit
類的東西,它們使用異常機制,但是大多數人不應該抓住它。 如果您熟悉它,它類似於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.