Ele*_*ena 70 python java exception
为什么Python的异常命名为"错误"(例如ZeroDivisionError,NameError,TypeError),而不是"例外"(例如ZeroDivisionException,NameException,TypeException).
我来自Java背景并且最近开始学习Python,因此这令人困惑,因为在Java中,错误和异常之间存在区别.
Python也有区别吗?
Jac*_*zny 84
您没有在名称中使用"Class"命名每个类,并且在名称中使用"_variable"命名每个变量.您没有使用"Exception"一词命名异常.名称应该说明对象的含义.'错误'是大多数例外的含义.
并非所有例外都是错误.SystemExit,KeyboardInterrupt,StopIteration,GeneratorExit都是例外,而不是错误.实际错误中的"错误"一词显示了差异.
'错误'比'异常'短.可以在代码宽度中保存几个字符而不会丢失意义.这有所不同.
dao*_*oad 44
我相信这个约定来自PEP 8 - Python代码风格指南:
例外名称
因为异常应该是类,所以类命名约定适用于此处.但是,您应该在异常名称上使用后缀"Error"(如果异常实际上是错误).
在这方面,Python与Java非常相似.但Python的Exception应该与Java的Throwable进行比较.
由于Throwables有各种各样的样式 - Error,RuntimeException和(checked)异常 - 所以Python也是如此(尽管没有经过检查的异常).
至于语言,错误是例外,因此继承层次结构并不奇怪.
我不是特别喜欢Exception这个名字.异常不仅用于特殊情况(如希望错误),而且还可以用于控制流程.因为这就是Exception所做的事情; 它跳出正常的控制流程到一个标记点.有点像goto,但更精致.
也就是说,每当您遇到无法找到合适返回值的情况时,您往往会使用异常.Python和Java一样.
\n\n\n问:为什么 Python 异常名为 \xe2\x80\x9cError\xe2\x80\x9d?
\n
我推测这是因为大多数Python 异常都被分类为错误或警告。如果 Python 异常的名称以 结尾Exception,则无法进行这种区分。
警告的示例有DeprecationWarning和ImportWarning。
请参阅2.x 类层次结构以了解内置异常以及3.x的类层次结构。
\n这只是命名而已。在 Java 中,您java.lang.Error与其他Throwable错误不同,因为这些类型的错误需要不被检查。在 Python 中,所有异常都是未经检查的,因此这种区别是毫无意义的。
| 归档时间: |
|
| 查看次数: |
13916 次 |
| 最近记录: |