我们如何在 JavaScript 中抛出和捕获 RangeError、ReferenceError、TypeError?
我想知道你们是否尝试过使用 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 )?
最好的。
I was wondering if any of you have tried catching errors such as RangeError, ReferenceError and TypeError using JavaScript's exception handling mechnism?
For instance for 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!");
}
In the above case, am i throwing a new RangeError object?
Cos my code example at alert(error.message) doesnt show the user defined message of "must be positive".
What can I do to throw my own RangeError object ( and ReferenceError, TypeError ) ?
Best.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这已经快一年了,但我认为迟到总比不到好。这取决于浏览器,但在某些情况下(咳嗽、咳嗽、FIREfox、咳嗽),RangeError继承Error 对象的 message 属性,而不是提供它自己的。恐怕唯一的解决方法是抛出
new Error("must be Positive!")
。对不起。This is almost a year old, but I figure better late than never. It depends on the browser, but in some instances (cough, cough, FIREfox, cough), RangeError inherits the Error object's message property instead of supplying it's own. I'm afraid the only workaround is to throw
new Error("must be positive!")
. Sorry.实际上,JavaScript 中的数组索引不需要为正数,因为这里的数组本质上是哈希表。如果您尝试访问数组中不存在的键,结果将只是
未定义
。您可以通过一个简单的条件来捕获它:
不过,我不确定“TypeError”是什么意思。请提供更多细节。
Actually, array indices in JavaScript don't need to be positive since arrays are essentially hash tables here. If you try to access a non-existing key in an array, the result will simply be
undefined
.You can catch that with a simple condition:
I'm not sure what you mean by "TypeError", though. Please give some more detail.