使用 Web 套接字并遇到错误时,通常需要传递错误消息。最初,使用 JSON.stringify 似乎是一个简单的解决方案,但它无法正确字符串化本机 Error 对象。
问题:
尝试字符串化 Error 对象结果在空对象 ({}) 中,表明错误的信息不是捕获。
原因:
问题出在 Error 对象的原型属性中。堆栈和消息等关键属性的可枚举标志设置为 false。因此,JSON.stringify 在序列化过程中会跳过这些属性,留下一个空对象。
解决方案:
要避免此行为,需要手动提取使用 Object.getOwnPropertyNames 获取 Error 对象的属性。然后,可以将这些属性作为替换函数传递给 JSON.stringify,以创建包含错误信息的 JSON 字符串:
JSON.stringify(err, Object.getOwnPropertyNames(err))
或者,您可以使用可枚举的属性创建自己的自定义错误对象,允许它们通过 JSON.stringify 正确地字符串化。
以上是为什么 JSON.stringify 无法字符串化错误对象以及如何修复?的详细内容。更多信息请关注PHP中文网其他相关文章!