【发布时间】:2014-10-31 07:27:01
【问题描述】:
我正在尝试实现一个(非常)简单的 try{}catch{} 块,如下所示:
try{
var invoice = parseInt(localStorage[0]);
if(invoice == NaN)
throw "invoice not a number";
localStorage[invoice] = Ticket;
console.log("localStorage["+invoice+'] : '+localStorage[invoice]);
}
catch (e){
console.log(e);
this.test();
}
我所做的是使用另一个函数手动清除 localStorage,从而将 localStorage[0] 设置为未定义。当我 parseInt(localStorage[0]) 时,它返回 NaN,并将其存储到发票中。我在发票和 NaN 上使用了双等于条件,因此,以防万一,即使 NaN 是一个字符串(它不应该是),它也应该是正确的。
我的问题是:为什么,当我说“throw...”时,它不调用块的 catch 部分?
当我运行以下代码时,我在 Chrome 的控制台中得到以下输出:
localStorage[NaN] : [object 对象]
它甚至不运行 catch 块,事实上,它继续运行 try 块,即使它应该抛出异常。
这是为什么?
【问题讨论】:
标签: javascript html