JavaScript 异常不起作用

标签 javascript

我试图弄清楚为什么我的代码在使用以下语句调用它之后没有抛出并显示错误消息(页面只是空白):

document.write(add(10,wrong_input));

program.js

var add = function (a,b){
    if(typeof a !== 'number' || typeof b !== 'number'){
        throw{
            name: 'TypeError',
            message: 'add needs numbers'
        } catch(e){
            document.writeln(e.name + ': ' + e.message);
        }
    }
    return a + b;
}

program.html

<html>
    <body>
    <pre><script src="program.js"></script></pre>
    <div></div>
    </body>
</html>

最佳答案

throw 语句没有 catch 子句,try 有。你应该分开 throw 和接住。例如:

var add = function (a,b){
    if(typeof a !== 'number' || typeof b !== 'number'){
        throw{
            name: 'TypeError',
            message: 'add needs numbers'
        }
    }
    return a + b;
}

try {
    add('foo', 1);
} catch(ex) {
    alert(ex.message);
}

请注意,我将 document.writeln 替换为 alert,因为如果它在页面加载后运行,前者将覆盖整个文档。如果您想要更好看的东西,请直接操作 DOM(通过更改某些元素的 innerHTML、附加节点等)。

关于JavaScript 异常不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15646638/

相关文章:

javascript - 如何在javascript中动态地将值从一种方法传递到另一种方法?

javascript - 计算二叉树 Javascript 的高度/深度

javascript - 在函数中使用数组作为参数

javascript - 为什么我的 JS 正则表达式匹配得比它应该的多?

javascript - 随机图像两个位置相同的集合

javascript - react 路由器|仅在页面刷新时加载组件

javascript - 如何在响应式布局中垂直对齐div内的文本

javascript - $scope 更改后 ng-repeat 不会第二次触发

javascript - 捕获WebSocket异常: "Error during WebSocket handshake: Unexpected response code: 503"

javascript - 如何将变量从一个函数传递到另一个函数