我们如何在 JavaScript 中抛出和捕获 RangeError、ReferenceError、TypeError?

发布于 2024-09-11 13:42:49 字数 569 浏览 14 评论 0原文

我想知道你们是否尝试过使用 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 技术交流群。

扫码二维码加入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.

感情废物 2024-09-18 13:42:49

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

您可以通过一个简单的条件来捕获它:

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”是什么意思。请提供更多细节。

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:

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');
}

I'm not sure what you mean by "TypeError", though. Please give some more detail.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文