Discuss / JavaScript / 看了一些讨论,总结一下

看了一些讨论,总结一下

Topic source

呐呐201911

#1 Created at ... [Delete] [Delete and Lock User]

JS很多函数是高容错性的,多层调用时,某一层抛出异常,异常逐层向外抛出,如果异常被当中的某一层所“包融”了,则这一层之外就捕捉不到异常了。看下面两个?:

 try {
    $btn.click(function () {
        var
            x = parseFloat($('#x').val()),
            y = parseFloat($('#y').val()),
            r;
        if (isNaN(x) || isNaN(y)) {
            throw new Error('输入有误');
        }else{
        r = x + y;
        alert('计算结果:' + r);
        }
        
    });
} catch (e) {
    alert('输入有误!');
}


//被jQuery.click()所包融了。应改为:


  $btn.click(function () {
    try {
        var
            x = parseFloat($('#x').val()),
            y = parseFloat($('#y').val()),
            r;
        if (isNaN(x) || isNaN(y)) {
            throw new Error('输入有误');
        }
        r = x + y;
        alert('计算结果:' + r);
    } catch (e) {
        alert('输入有误!');
    }
});
  //成功捕捉

不知道这样理解对不对


  • 1

Reply