我想知道你是否有人尝试使用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)?
最佳。
答案 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!")
。遗憾。