繁体   English   中英

Javascript中的try-catch语句捕获了哪些类型的错误?

[英]What types of errors are caught by try-catch statements in Javascript?

如果我写

try { null = foobar } catch(e) { alert( e ) };

没有任何警报,但在控制台中记录了一个ReferenceError 然而,

try { barfoo = foobar } catch(e) { alert( e ) };

显示带有ReferenceError的警报。

所以问题是:什么类型的错误在什么上下文被try-catch语句捕获?

因此,您的第一行代码是无效的JavaScript语法。 这就是为什么你得到一个:
ReferenceError: Invalid left-hand side in assignment (您不能将vars指定为null

你的第二行是有效的语法,但抛出一个:
ReferenceError: foobar is not defined

现在,第二行被捕获的原因,但第一行没有被捕获,是因为JavaScript解释器在解释代码时抛出第一个错误,与第二个示例中实际执行它时相比。

一个更简单的解释,礼貌@Matt

它只是无效的JavaScript语法与运行时错误 后者被抓住,前者没有。

您可以将其视为JavaScript解释器,在执行它之前查看所有代码并思考是否所有代码都正确解析 如果没有,它会抛出一个无法捕获的Error (无论是SyntaxError还是ReferenceError )。 否则,代码会执行,并且在某一时刻您在执行期间输入 try / catch块,并且在捕获抛出任何运行时错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM