使用SyntaxError捕获无效的变量名称

问题描述 投票:0回答:1

首先,catch子句没有被执行。但是我在浏览器中收到“SyntaxError:missing exponent”错误。我想知道是不是因为加载时间?或者我的设置不对。

我想为不正确的变量名称制作自定义错误。

try {
  var 1ele = 1;
} catch (error) {
  if (error instanceOf SyntaxError) {
    throw new SyntaxError("There is a syntax error!");
  }
}

谢谢您的帮助。

javascript error-handling try-catch
1个回答
1
投票

您在代码var 1ele = 1;中引入了语法错误,并打算捕获错误以显示自定义错误消息。但是,这不会以您现在编写的方式工作,因为语法错误将导致JavaScript解析器在遇到语法错误后立即停止。您的代码中的catch部分将永远无法访问。

但是,您可以使用eval语句实现相同的功能。请尝试下面的代码。

try {
  eval("var 1ele = 1");
} catch (error) {
  if (error instanceof SyntaxError) {
    throw new SyntaxError("There is a syntax error!");
  }
}

在这里,我在eval函数中包含了引发变量声明的语法错误。这将仅在执行eval语句的环境中导致语法错误,而不是主代码。您将能够捕获错误并显示您的自定义消息。

注意1:您收到"SyntaxError: missing exponent"错误消息,因为您的变量名称以1e开头,这使得JavaScript解析器认为它是指数格式的数字。

注意2:您在代码中使用了instanceOf。它实际上是instanceof(小写o)。 Ref

© www.soinside.com 2019 - 2024. All rights reserved.