Ziv*_*evy 6 javascript error-handling javascript-objects
我看到根据MDN - 错误文档,该Error对象可能在不同的浏览器中具有不同的行为。我想看看您对在默认Error对象上添加属性有何看法。
在我的具体代码中,我想用我自己的标签名称标记一个Error对象以供进一步使用,这意味着 -> 向对象添加一个属性,如下所示:
const error = new Error('some message')
if(someConditionExist()){
error.__myTag = 'tag1';
}
else {
error.__myTag = 'tag2';
}
//then throwing the error and catch it elsewhere...
Run Code Online (Sandbox Code Playgroud)
我还没有看到任何指导方针,这种事情的含义(如果有的话……)。
你们有任何顾虑吗?您是否在不同浏览器中遇到过任何问题?
好吧,我们可以争论您是否应该向内置对象添加自定义属性,但这样的事情可以工作:
class CustomError extends Error {
constructor(tag) {
super();
this.__tag = tag;
}
};
const customError = new CustomError('tag1');
console.log(customError.__tag); // 'tag1'
Run Code Online (Sandbox Code Playgroud)
事件虽然是一个老问题,但另一种解决方案可能是,在某些情况下,使用 Object.assign() “动态”添加属性
const error = new Error('some message')
const withTag = Object.assign(error , { __tag: "tag_1"})
Run Code Online (Sandbox Code Playgroud)
请注意,在某些浏览器中的 console.error() 上,您将看不到添加的其他属性。