gpt4 book ai didi

javascript - 有没有办法覆盖默认的 JS 错误消息?

转载 作者:行者123 更新时间:2023-11-30 21:01:38 24 4
gpt4 key购买 nike

我猜我的问题的答案是否定的,但由于我对 Error.prototype 的工作原理知之甚少,我认为值得一问:是否有任何方法可以改变来自 Javascript 错误的错误消息?

例如,如果我得到一个错误:

TypeError: (intermediate value) is not iterable

有什么方法可以改变我得到的东西:

TypeError: You expected an array but it wasn't an array dummy!

我考虑过使用全局错误处理程序然后重新抛出它们,但这只适用于 Uncaught Error 。有没有我可以更改(或任何其他方式)来执行此操作的 Error.prototype 方法?

一点都不重要,只是好奇。

编辑:只是为了澄清两点:

1) 我了解try/catch 是如何工作的,但我想问的是是否有办法控制之前<生成的消息/em> 错误被抛出/捕获(可能是通过覆盖 Error.prototype 的方法)。

2) 回答“不,没有办法做到这一点,所有 JS 错误消息的生成都是在内部处理的,JS 代码无法控制它”将是完全合法的(......如果是这样的话).

最佳答案

您必须覆盖 TypeError 类,而不是这些方法之一。

const overridableMessages = [{
search: 'TypeError: (intermediate value) is not iterable',
replace: 'TypeError: You expected an array but it wasn\'t an array dummy!'
}]

class TypeError extends window.TypeError {
constructor (message) {
super(message)
overridableMessages.forEach((overridableMessage) => {
if (this.message === overridableMessage.search) {
this.message = overridableMessage.replace
}
})
}
}

window.TypeError = TypeError

关于javascript - 有没有办法覆盖默认的 JS 错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47084945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com