如何在JavaScript计算器中实现try-catch捕获输入错误?
修复计算器无效表达式错误处理问题
你的计算器在输入6++、5+-3这类无效表达式时,无法正确返回错误提示,只需在执行eval的代码块外包裹try-catch语句,就能捕获语法错误并输出err。
修改后的完整代码如下:
let string = ""; let buttons = document.querySelectorAll('.button'); Array.from(buttons).forEach((button) => { button.addEventListener('click', (e) => { if (e.target.innerHTML == '=') { try { // 尝试执行表达式计算 const result = eval(string); string = result.toString(); document.querySelector('input').value = string; } catch (error) { // 捕获语法错误,设置错误提示 string = 'err'; document.querySelector('input').value = string; } } else if (e.target.innerHTML == 'C') { string = ""; document.querySelector('input').value = string; } else { // 当前显示错误时,新输入直接重置内容 if (string === 'err') { string = e.target.innerHTML; } else { string += e.target.innerHTML; } document.querySelector('input').value = string; } }) })
关键修改说明:
- 给
eval执行逻辑添加try-catch捕获语法错误,触发错误时将输入框内容设为err - 新增状态判断:当输入框显示
err时,点击其他按钮会重置输入内容,避免错误状态延续 - 修正
C按钮的清空逻辑,将原空格改为空字符串,避免干扰后续表达式解析
内容的提问来源于stack exchange,提问作者Shreyansh
相关产品推荐
相关产品推荐

