为什么Python异常名为“错误”(例如ZeroDivisionError
,NameError
,TypeError
)
而不是“例外”(例如ZeroDivisionException
,NameException
,TypeException
)。
我来自Java背景并且最近开始学习Python,因此这令人困惑,因为在Java中,错误和异常之间存在区别。
Python是否也有区别?
答案 0 :(得分:75)
您没有在名称中使用“Class”命名每个类,并且在名称中使用“_variable”命名每个变量。您没有使用“Exception”一词命名异常。名称应该说明对象的含义。 “错误”是大多数例外情况的含义。
并非所有例外都是错误。 SystemExit
,KeyboardInterrupt
,StopIteration
,GeneratorExit
都是例外而非错误。实际错误中的“错误”一词显示了差异。
'错误'比'异常'短。可以在代码宽度中保存几个字符而不会丢失意义。这有所不同。
答案 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
结尾,则无法实现这种区分。
警告示例包括DeprecationWarning
和ImportWarning
。
答案 4 :(得分:1)
这只是命名。在Java中,您java.lang.Error
与其他Throwable
不同,因为需要取消选中这些类型的错误。在Python中,所有异常都是未经检查的,因此区别是没有意义的。
答案 5 :(得分:0)
简单地说:
Exception
概念:
我通常会做这件事,但我要作一个例外
OR
通常这是一个错误,但是我们将要创建一个异常,捕获它并执行一些步骤。
详细信息:
异常与错误:
https://docs.python.org/2/tutorial/errors.html
在执行过程中检测到的错误称为异常,而不是 无条件致命
工作流程: