5

在 python 中,每当我们编写用户定义的异常时,我们都必须从 class 扩展它Exception。我的问题是为什么我们不能扩展它,BaseException它是异常层次结构的超类,Exception也是BaseException.

4

2 回答 2

9

BaseExceptionKeyboardInterrupt包括and之类的东西SystemExit,它们使用异常机制,但大多数人不应该抓住它。Throwable如果您熟悉的话,它类似于Java。直接派生的事物BaseException通常旨在关闭系统,同时执行finally块和上下文管理器__exit__方法以释放资源。

于 2013-07-23T05:50:19.143 回答
3

根据Python2 文档,有四个例外是BaseException

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

不是的三个Exception实际上不是错误,这意味着通常您不想将它们当作错误来捕获。 BaseException在 Python2.5 中添加(在此之前,没有BaseException,其他异常是从 子类化的Exception)。

于 2013-07-23T05:57:02.390 回答