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