看起来Error
和Exception
是一回事:它们都可以用throw
语句抛出并用try catch
块捕获。
4 回答
JavaScript 语法
错误和异常在 JavaScript 中是语法上的同义词。该语言仅实现Error
关键字(通过window.Error
)。您可以定义自定义错误,使用Error.constructor
, 将name
和message
作为参数。
JavaScript 错误
还有行号糖可用于跟踪代码中出现的错误。JavaScript 只有Error
. 无论你听到人们谈论Exceptions
还是Errors
在 JavaScript 中他们指的是同一个东西。
浏览器会做出区分:(ReferenceError
当访问一个名称在堆中不存在的变量时,或者当你打错字时(更多here。),TypeError
也是一个已知的JS错误,更多here。
JavaScript 异常
一个已知的 JavaScriptException
是DOM Exception 8
. 当您访问未准备好的对象时会发生这种情况,例如XMLHttpRequest
尚未完成请求的对象。
执行
使用try catch
ortry catch finally
块时,您将同时处理 JavaScriptException
和Error
. 代码方面的差异没有影响。
在幕后,浏览器使用相同的window.Error
constructor
. AnException
是带有 a且包含“异常”的Error
实例。name
message
试试:var myCustomError = new Error("myException", "An exception occurred.");
。“异常”是字符串中的文本。更多关于Error
这里。
习俗
按照惯例, 和 之间是有区别Error
的Exception
。AnError
表示明显违规。ATypeError
或ReferenceError
表示您未遵循语言规范。
当您在响应完成之前Exception
访问响应时会引发An 。是“你违反了法律”的喊声,是“快到了!” 垫在肩上。希望类比有所帮助!XMLHttpRequest
Error
Exception
我认为错误是严重的事情,您不应该尝试捕获异常是应该捕获的事情,只要可以处理它。
错误是代码中发生错误或无效的事情。它可能会导致内存错误,这是不应该发生且无法处理的事情。
而当代码中满足某些条件时,异常会抛出一些东西。它可能与真正的错误不对应。
try {
throw "throwing string";
} catch (ex) {
console.log(ex);
}
如果我们运行这段代码,我们将观察到catch子句将接收我们使用 throw 关键字抛出的任何内容。这意味着如果我们抛出字符串,我们将收到字符串,如果我们抛出对象,我们将收到对象,如果我们抛出数字,我们将收到数字。
注意:所以如果我们抛出错误,我们将收到错误。
因此,结论是我们使用throw 关键字抛出的任何东西都将被视为异常。如果我们不捕捉(或处理)它,那么我们的 Javascript 代码就会崩溃。