首頁 >web前端 >js教程 >為什麼 JSON.stringify 無法字串化錯誤物件以及如何修復?

為什麼 JSON.stringify 無法字串化錯誤物件以及如何修復?

Patricia Arquette
Patricia Arquette原創
2024-11-29 21:53:10509瀏覽

Why Does JSON.stringify Fail to Stringify Error Objects and How Can I Fix It?

JSON.stringify:無法字串化錯誤物件

使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn