似乎Error
和Exception
是相同的事情:它们都可以使用throw
语句抛出并被try catch
块捕获。
答案 0 :(得分:26)
JavaScript语法
错误和异常在JavaScript中在语法上是同义词。该语言仅实现Error
关键字(通过window.Error
)。您可以使用Error.constructor
定义自定义错误,name
和message
作为参数。
JavaScript错误
还有行号糖可用于跟踪代码中的错误发生。 JavaScript只有Error
。无论您是否听到人们在谈论Exceptions
或Errors
,他们都会在JavaScript中引用相同的内容。
浏览器有所区别:ReferenceError
(当访问堆中不存在的名称的变量时,或者当你输入拼写错误时(更多here。),{{1} }也是一个已知的JS错误,更多here。
JavaScript异常
已知的JavaScript TypeError
为Exception
。当您访问未准备好的对象(例如尚未完成请求的DOM Exception 8
)时,会发生此错误。
<强>实施强>
使用XMLHttpRequest
或try catch
阻止时,您将同时处理JavaScript try catch finally
和Exception
。代码方面,差异没有影响。
在幕后,浏览器使用相同的Error
window.Error
。 constructor
是一个Exception
个实例,Error
和name
包含“例外”。
尝试:message
。 “异常”是字符串中的文本。有关var myCustomError = new Error("myException", "An exception occurred.");
here的更多信息。
<强>公约强>
按照惯例,Error
和Error
之间存在差异。 Exception
表示明显违规。 Error
或TypeError
表示您未遵循语言规范。
在完成之前访问ReferenceError
响应时,会引发Exception
。 XMLHttpRequest
是“你违法”的喊叫而Error
是“几乎就在那里!”垫在肩上。希望这个比喻有所帮助!
答案 1 :(得分:9)
答案 2 :(得分:1)
我认为错误是严重的,你不应该试图抓住 只要有可能处理它,就应该捕获一个例外。
错误是代码中出现错误或无效的错误。它可能会导致内存错误,这是永远不会发生的事情,无法对其进行处理。
当代码中满足某些条件时,异常会抛出某些内容。它可能与实际错误无关。
答案 3 :(得分:0)
try {
throw "throwing string";
} catch (ex) {
console.log(ex);
}
如果运行此代码,我们将观察到 catch 子句将使用throw接收 任何我们抛出的东西 关键词。这意味着如果我们抛出字符串,我们将接收字符串,如果我们抛出对象,我们将接收对象,如果我们抛出数字,我们将接收数字。
注意: 因此,如果抛出错误,我们将收到错误消息。
因此,结论是我们使用 throw关键字 抛出的任何内容都将被视为例外。如果我们没有捕获(或处理)它,那么我们的Javascript代码就会崩溃。