[英]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.