我们如何在JavaScript中抛出并捕获RangeError,ReferenceError,TypeError?

时间:2010-07-23 08:22:17

标签: javascript exception-handling typeerror referenceerror

我想知道你是否有人尝试使用JavaScript的异常处理机制来捕获RangeError,ReferenceError和TypeError等错误?

例如RangeError:

try {
var anArray = new Array(-1); 
// an array length must be positive

         throw new RangeError("must be positive!")
}
catch (error) {  
         alert(error.message);
         alert(error.name);
}
finally {
         alert("ok, all is done!");
}

在上面的例子中,我是否抛出一个新的RangeError对象?

我在alert(error.message)中的代码示例并未显示用户定义的“必须为正”的消息。

如何抛出自己的RangeError对象(和ReferenceError,TypeError)?

最佳。

2 个答案:

答案 0 :(得分:2)

实际上,JavaScript中的数组索引不需要是正数,因为数组本质上是哈希表。如果您尝试访问数组中不存在的键,结果将只是undefined

你可以通过一个简单的条件来解决这个问题:

if (typeof someArray[foo] !== "undefined") {
    //do stuff
} else {
    //do error handling
    //Here I'm just throwing a simple exception with nothing than a message in it.
    throw new Error('something bad happened');
}

但我不确定“TypeError”是什么意思。请提供更多细节。

答案 1 :(得分:2)

这已经差不多一年了,但是我觉得迟到总比没有好。这取决于浏览器,但在某些情况下(咳嗽咳嗽 FIREfox 咳嗽),RangeError继承Error对象的message属性,而不是提供它自己的。我担心唯一的解决方法是抛出new Error("must be positive!")。遗憾。