Java 为什么Python异常被命名为“异常”;错误";?
为什么Python异常被命名为“Error”(例如Java 为什么Python异常被命名为“异常”;错误";?,java,python,exception,Java,Python,Exception,为什么Python异常被命名为“Error”(例如ZeroDivisionError,namererror,TypeError) 而不是“例外”(例如,ZeroDivisionException,NameException,TypeException) 我来自Java背景,最近开始学习Python,这让人感到困惑,因为在Java中,错误和异常是有区别的 Python也有区别吗?只是命名而已。在Java中,您有Java.lang.Error与其他Throwables不同,因为这些类型的错误需要取消
ZeroDivisionError
,namererror
,TypeError
)
而不是“例外”(例如,ZeroDivisionException
,NameException
,TypeException
)
我来自Java背景,最近开始学习Python,这让人感到困惑,因为在Java中,错误和异常是有区别的
Python也有区别吗?只是命名而已。在Java中,您有
Java.lang.Error
与其他Throwable
s不同,因为这些类型的错误需要取消检查。在Python中,所有异常都是未经检查的,因此这种区别是毫无意义的
键盘中断
,停止迭代
,生成退出
都是例外,而不是错误。“实际错误”中的“错误”一词显示了差异Python在这方面与Java非常相似。但Python的例外应该与Java的可抛弃性相比较 由于抛弃程序有各种各样的风格——错误、RuntimeException和(选中的)异常——Python也是如此(尽管没有选中的异常) 至于语言,错误是异常的,因此继承层次结构并不奇怪 不过我并不特别喜欢这个名字。异常不仅用于异常情况(如错误),也用于失控流。因为这就是例外所做的;它跳出正常的控制流,到达一个标记点。有点像后藤,但更精致
也就是说,每当您遇到无法找到合适的返回值的情况时,您都倾向于使用异常。这两种语言在Python和Java中都有 我相信这个惯例来自: 例外名称 因为异常应该是类,所以类命名约定 适用于这里。但是,您应该在您的计算机上使用后缀“Error” 异常名称(如果异常实际上是一个错误) 为什么Python异常被命名为“错误” 我猜想这是因为大多数Python异常被归类为错误或警告。如果Python异常的名称以
Exception
结尾,则不可能有这种区别
警告的示例有弃用警告
和导入警告
请参阅的以及的。简单地说:
- Python异常未命名为“Error”
- Python错误被命名为“Error”
- Python错误可以作为异常引发、捕获和处理
- 以错误开头的内容可能最终成为已处理的异常,而不会导致错误消息
- 也可以直接引发
异常
- 该程序监视错误
- 如果在执行过程中发生错误但程序未检测到,则会产生错误消息
- 如果在执行过程中发生错误并被程序检测到,则为异常
- 程序可以处理异常。它们可以被优雅地处理,也可以导致错误消息
- 程序未处理的异常为未处理(未捕获)异常,并成为错误消息
类Exception HandlingException extends RuntimeException的东西,这读起来很可怕。除了其他人发布的其他原因之外,请记住,Python标准库中的命名并不总是一致的。并非所有异常都是错误:事实上,有许多异常是从名为Warning
的异常类派生的。请看。这是一个伟大的可视化。Python3的最新可视化在这里:-1;我觉得这并不能提供任何有用的见解。您谈论“异常情况”,但没有明确定义它们,您描述了异常如何工作(“跳出正常控制流到标记点”),这并不准确,您调用Java中错误和RuntimeException之间的区别,就好像Python中存在类似的区别一样(事实并非如此),而且,您从来没有真正解决过为什么Python的异常名称中经常出现Error
。