【问题标题】:What's the difference between Error and Exception in Javascript?Javascript中的错误和异常有什么区别?
【发布时间】:2013-04-15 02:06:21
【问题描述】:

似乎ErrorException 是同一个东西:它们都可以用throw 语句抛出并用try catch 块捕获。

【问题讨论】:

标签: javascript exception error-handling


【解决方案1】:
try {
    throw "throwing string";
} catch (ex) {
    console.log(ex);
}

如果我们运行此代码,我们将观察到 catch 子句将使用 throw 接收 无论我们抛出什么关键词。这意味着如果我们抛出字符串,我们将收到字符串,如果我们抛出对象,我们将收到对象,如果我们抛出数字,我们将收到数字。

注意:所以如果我们抛出错误,我们将收到错误。

因此结论是我们使用 throw 关键字 抛出的任何东西都将被视为异常。如果我们不捕捉(或处理)它,那么我们的 Javascript 代码就会崩溃。

【讨论】:

    【解决方案2】:

    JavaScript 语法

    错误和异常在 JavaScript 中是语法上的同义词。该语言仅实现Error 关键字(通过window.Error)。您可以使用Error.constructor 定义自定义错误,它以namemessage 作为参数。

    JavaScript 错误

    还有行号糖可用于跟踪代码中出现的错误。 JavaScript 只有Error。无论您听到人们谈论的是 Exceptions 还是 Errors,在 JavaScript 中他们指的是同一个东西。

    浏览器会做出区分:ReferenceError(当访问一个名称在堆中不存在的变量时,或者当你打错字时(更多 here.),TypeError 也是一个已知的 JS错误,更多here

    JavaScript 异常

    已知的 JavaScript ExceptionDOM Exception 8。当您访问未准备好的对象时会发生这种情况,例如尚未完成请求的XMLHttpRequest

    实施

    当使用try catchtry catch finally 块时,您将同时处理JavaScript ExceptionError。代码方面的差异没有影响。

    在幕后,浏览器使用相同的window.ErrorconstructorException 是带有 namemessageError 实例,其中包含“异常”。

    试试:var myCustomError = new Error("myException", "An exception occurred.");。 “异常”是字符串中的文本。更多关于Errorhere

    约定

    按照惯例,ErrorException 之间是有区别的。 Error 表示明显违规。 TypeErrorReferenceError 表示您未遵循语言规范。

    当您在完成之前访问XMLHttpRequest 响应时,将引发ExceptionError 是“你违反了法律”的呼喊,Exception 是“快到了!”垫在肩上。希望类比有所帮助!

    【讨论】:

    • 一个让我印象深刻的细微差别是 DOMException 的 message 属性是只读的,而我看到的所有其他错误都有一个可写的 message 属性。可能还有更多是只读的,我只是没遇到过。
    • 惯例位是我不同意的。
    【解决方案3】:

    基于lecture,错误由JavaScript引擎抛出,异常由开发者抛出。它只是命名约定。

    • JavaScript 抛出错误
    • 开发者抛出异常

    在技术方面是相同的结构(事物)。

    【讨论】:

    • 那是清脆的 :)
    • 我不认为 W3schools 是最可信或最权威的来源 - 并且它没有说明任何理由来证明这个答案。
    【解决方案4】:

    我认为错误是您不应该尝试捕捉的严重错误 异常是应该被捕获的东西,只要可以处理它。

    错误是指代码中出现错误或无效的情况。它可能会导致内存错误,这是不应该发生且无法处理的事情。

    而当代码中满足某些条件时,异常会抛出一些东西。它可能与真正的错误不对应。

    【讨论】:

      猜你喜欢
      • 2022-07-15
      • 2011-01-26
      • 2011-08-14
      • 1970-01-01
      • 2018-09-15
      • 2011-02-24
      • 2019-11-26
      • 2020-12-20
      • 1970-01-01
      相关资源
      最近更新 更多