如果 eval() 无法计算给定的字符串,则显示 "Syntax Error"
Show "Syntax Error" if eval() can not evaluate a given string
我正在构建一个使用 HTML、CSS 和 Javascript 制作简单计算器的小项目。
我正在使用 eval 函数。我想拥有 Math Error 和 Syntax Error 这两个功能,就像真正的计算器一样,我已经成功添加了 Math Error 功能,但我无法添加语法错误。
所以问题是,
如果我这样做:
var a = "2+2";
alert(eval(a));
显示正确答案:4。
但如果我这样做:
var a = "2++2";
alert(eval(a));
或者这个:
document.write(eval(a));
然后 eval 函数没有执行,屏幕上什么也没有显示。
它在控制台上显示了这一点。
Uncaught SyntaxError: Invalid left-hand side expression in postfix
operation
但我希望它在屏幕上只显示“语法错误”。
使用 try/catch
块捕获 eval
抛出的异常,并在错误对象上使用 .name
仅打印其 class 名称。在这种情况下,它是 SyntaxError
。
var a = "2++2";
try {
alert(eval(a));
} catch (e) {
console.error(e.name);
}
您还可以通过简单地检查 e.name
并打印任何您想要的内容来对不同的错误(以及自定义错误消息)进行自定义处理。
请注意,console.error
打印到 stderr
,而不是通常从 console.log
打印的 stdout
。如果需要,您可以更改它。
我正在构建一个使用 HTML、CSS 和 Javascript 制作简单计算器的小项目。 我正在使用 eval 函数。我想拥有 Math Error 和 Syntax Error 这两个功能,就像真正的计算器一样,我已经成功添加了 Math Error 功能,但我无法添加语法错误。 所以问题是, 如果我这样做:
var a = "2+2";
alert(eval(a));
显示正确答案:4。 但如果我这样做:
var a = "2++2";
alert(eval(a));
document.write(eval(a));
然后 eval 函数没有执行,屏幕上什么也没有显示。 它在控制台上显示了这一点。
Uncaught SyntaxError: Invalid left-hand side expression in postfix operation
但我希望它在屏幕上只显示“语法错误”。
使用 try/catch
块捕获 eval
抛出的异常,并在错误对象上使用 .name
仅打印其 class 名称。在这种情况下,它是 SyntaxError
。
var a = "2++2";
try {
alert(eval(a));
} catch (e) {
console.error(e.name);
}
e.name
并打印任何您想要的内容来对不同的错误(以及自定义错误消息)进行自定义处理。
请注意,console.error
打印到 stderr
,而不是通常从 console.log
打印的 stdout
。如果需要,您可以更改它。