42

看起来ErrorException是一回事:它们都可以用throw语句抛出并用try catch块捕获。

4

4 回答 4

45

JavaScript 语法

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

JavaScript 错误

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

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

JavaScript 异常

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

执行

使用try catchortry catch finally块时,您将同时处理 JavaScriptExceptionError. 代码方面的差异没有影响。

在幕后,浏览器使用相同的window.Error constructor. AnException是带有 a且包含“异常”的Error实例。namemessage

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

习俗

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

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

于 2013-04-22T08:42:43.993 回答
16

根据讲座,错误是由 JavaScript 引擎抛出的,异常是由开发人员抛出的。它只是命名约定。

  • JavaScript 抛出错误
  • 开发人员抛出异常

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

于 2013-04-22T08:41:00.400 回答
1

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

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

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

于 2013-04-22T08:31:50.533 回答
0
try {
    throw "throwing string";
} catch (ex) {
    console.log(ex);
}

如果我们运行这段代码,我们将观察到catch子句将接收我们使用 throw 关键字抛出的任何内容。这意味着如果我们抛出字符串,我们将收到字符串,如果我们抛出对象,我们将收到对象,如果我们抛出数字,我们将收到数字。

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

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

于 2019-10-11T02:28:30.810 回答