为什么Python异常名为“Error”?

时间:2010-05-25 10:36:41

标签: java python exception

为什么Python异常名为“错误”(例如ZeroDivisionErrorNameErrorTypeError) 而不是“例外”(例如ZeroDivisionExceptionNameExceptionTypeException)。

我来自Java背景并且最近开始学习Python,因此这令人困惑,因为在Java中,错误和异常之间存在区别。

Python是否也有区别?

6 个答案:

答案 0 :(得分:75)

  1. 您没有在名称中使用“Class”命名每个类,并且在名称中使用“_variable”命名每个变量。您没有使用“Exception”一词命名异常。名称应该说明对象的含义。 “错误”是大多数例外情况的含义。

  2. 并非所有例外都是错误。 SystemExitKeyboardInterruptStopIterationGeneratorExit都是例外而非错误。实际错误中的“错误”一词显示了差异。

  3. '错误'比'异常'短。可以在代码宽度中保存几个字符而不会丢失意义。这有所不同。

答案 1 :(得分:42)

我相信这个约定来自PEP 8 - Style Guide for Python Code

  

例外名称

     

因为异常应该是类,类命名约定   这里适用。但是,您应该使用后缀“错误”   异常名称(如果异常实际上是错误)。

答案 2 :(得分:8)

Python在这方面与Java非常相似。但Python的Exception应该与Java的Throwable进行比较。

由于Throwables有各种各样的风格 - Error,RuntimeException和(checked)异常 - Python也是如此(虽然没有经过检查的异常)。

对于语言,错误是例外,因此继承层次结构并不奇怪。

我并不特别喜欢Exception这个名字。异常不仅用于特殊情况(如希望错误),而且还可以用于控制流程。因为这就是Exception所做的事情;它跳出正常的控制流程到标记点。有点像goto,但更精致。

也就是说,每当你遇到没有找到合适的返回值的情况时,你倾向于使用Exception。 Python和Java一样。

答案 3 :(得分:4)

  

Q值。为什么Python异常名为“Error”?

我推测这是因为大多数 Python例外被归类为错误警告。如果Python异常的名称以Exception结尾,则无法实现这种区分。

警告示例包括DeprecationWarningImportWarning

请参阅the 2.x class hierarchy for built-in exceptions以及3.x的内容。

答案 4 :(得分:1)

这只是命名。在Java中,您java.lang.Error与其他Throwable不同,因为需要取消选中这些类型的错误。在Python中,所有异常都是未经检查的,因此区别是没有意义的。

答案 5 :(得分:0)

简单地说:

  • Python异常未命名为“错误”。
  • Python错误被命名为“错误”。
  • Python错误可以引发,捕获和处理为异常。
  • 始于错误的事物可能最终成为已处理的异常,不会导致错误消息。
  • 也可以直接举起Exception

概念:

  

我通常会做这件事,但我要作一个例外

OR

通常这是一个错误,但是我们将要创建一个异常,捕获它并执行一些步骤。

详细信息:

异常与错误:

https://docs.python.org/2/tutorial/errors.html

  

在执行过程中检测到的错误称为异常,而不是   无条件致命

工作流程:

  • 程序监视错误。
  • 如果发生错误,但是程序在执行过程中未检测到错误,则会导致错误消息。
  • 如果发生错误并在执行过程中被程序检测到,则为异常。
  • 程序可以处理异常。可以妥善处理它们或导致错误消息。
  • 程序未处理的异常是未处理未捕获)异常,并成为错误消息。