尝试捕获javascript语句中的未识别的错误

时间:2014-09-06 14:17:14

标签: javascript html5

我正在尝试实现一个(非常)简单的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]设置为undefined。当我parseInt(localStorage [0])时,它返回NaN,并将其存储到发票中。我使用了双重等于条件的发票和NaN所以,以防万一,即使NaN是一个字符串(它不应该是),它也应该是真的。

我的问题是:为什么,当我说“扔......”时,它不会调用块的捕获部分吗?

当我运行以下代码时,我在Chrome控制台中获得以下输出:

  

localStorage [NaN]:[object Object]

它甚至没有运行catch块,事实上,即使它应该抛出异常,它仍会继续运行try块。

为什么会这样?

1 个答案:

答案 0 :(得分:4)

NaN不等于自己,请使用isNaN