0

我正在用 Javascript 为我的学校作业制作一个计算器,它使用函数 eval()。是的,我知道,eval 是邪恶的,但我可以向你保证,我已经得到了这个,所以没有办法利用它。

eval 将文本框中的值转换为答案,然后显示在另一个文本框中。但是,当语法错误时(例如,用户输入“1++2”),我希望脚本显示某种错误。但是当输入无效时, eval() 似乎就消失了。它不返回任何值,不返回错误(好吧,chrome 尝试用“未捕获的语法错误”来解释它,但这对我没有用)所以如果用户弄乱了语法,我无法向脚本解释该怎么做。

TL;DR:如果 eval() 输入无效,如何让脚本显示错误消息?

提前致谢

4

2 回答 2

3

throw是(引发)一个异常,您可以catch(处理)并做任何您想做的事情:

var s;
try
    { s = eval('1++2'); }
catch(e)
    { s = e; }
// now s is either the result, or the exception-info
于 2012-11-02T23:50:35.000 回答
1

您应该使用 try catch 块来优雅地向用户显示发生了错误。

function evalJS(JsCode) 
{ 
    try 
    { 
        eval(JsCode); 
    } 
    catch(e) 
    { 
        alert('The string ' + JsCode + ' contained incorrect JS syntax.'); 
    } 
} 

evalJS('bogus code'); 
于 2012-11-02T23:51:48.107 回答