Java 为什么Python异常被命名为“异常”;错误";?

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不同,因为这些类型的错误需要取消

为什么Python异常被命名为“Error”(例如
ZeroDivisionError
namererror
TypeError
) 而不是“例外”(例如,
ZeroDivisionException
NameException
TypeException

我来自Java背景,最近开始学习Python,这让人感到困惑,因为在Java中,错误和异常是有区别的


Python也有区别吗?

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

  • 不能用“class”命名每个类,也不能用“\u variable”命名每个变量。同样,您也不使用“exception”一词来命名exception。一个名字应该说明一个物体的意义“错误”是大多数例外情况的含义

  • 并非所有的例外都是错误<代码>系统退出,
    键盘中断
    停止迭代
    生成退出
    都是例外,而不是错误。“实际错误”中的“错误”一词显示了差异

  • “Error”比“Exception”短。这样可以在代码宽度中保存几个字符,而不会丢失其含义。这会有所不同


  • Python在这方面与Java非常相似。但Python的例外应该与Java的可抛弃性相比较

    由于抛弃程序有各种各样的风格——错误、RuntimeException和(选中的)异常——Python也是如此(尽管没有选中的异常)

    至于语言,错误是异常的,因此继承层次结构并不奇怪

    不过我并不特别喜欢这个名字。异常不仅用于异常情况(如错误),也用于失控流。因为这就是例外所做的;它跳出正常的控制流,到达一个标记点。有点像后藤,但更精致


    也就是说,每当您遇到无法找到合适的返回值的情况时,您都倾向于使用异常。这两种语言在Python和Java中都有

    我相信这个惯例来自:

    例外名称 因为异常应该是类,所以类命名约定 适用于这里。但是,您应该在您的计算机上使用后缀“Error” 异常名称(如果异常实际上是一个错误)

    为什么Python异常被命名为“错误”

    我猜想这是因为大多数Python异常被归类为错误警告。如果Python异常的名称以
    Exception
    结尾,则不可能有这种区别

    警告的示例有
    弃用警告
    导入警告


    请参阅的以及的。

    简单地说:

    • Python异常未命名为“Error”
    • Python错误被命名为“Error”
    • Python错误可以作为异常引发、捕获和处理
    • 以错误开头的内容可能最终成为已处理的异常,而不会导致错误消息
    • 也可以直接引发
      异常
    概念:

    我通常做这件事,但我要破例

    这通常是一个错误,但我们将创建一个异常,捕获它,并执行一些过程

    详细信息:

    例外与错误:

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

    工作流程:

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

    基类被称为Exception(参见我对另一个答案的评论),那么为什么不把子类也命名为Exception呢?@Elena:因为这样你最终会得到类似于
    类Exception HandlingException extends RuntimeException的东西,这读起来很可怕。除了其他人发布的其他原因之外,请记住,Python标准库中的命名并不总是一致的。并非所有异常都是错误:事实上,有许多异常是从名为
    Warning
    的异常类派生的。请看。这是一个伟大的可视化。Python3的最新可视化在这里:-1;我觉得这并不能提供任何有用的见解。您谈论“异常情况”,但没有明确定义它们,您描述了异常如何工作(“跳出正常控制流到标记点”),这并不准确,您调用Java中错误和RuntimeException之间的区别,就好像Python中存在类似的区别一样(事实并非如此),而且,您从来没有真正解决过为什么Python的异常名称中经常出现
    Error