Wenn Sie mit Web-Sockets arbeiten und auf Fehler stoßen, ist es oft notwendig, Fehlermeldungen weiterzugeben. Die Verwendung von JSON.stringify scheint zunächst eine unkomplizierte Lösung zu sein, aber native Fehlerobjekte werden dadurch nicht richtig stringifiziert.
Problem:
Der Versuch, ein Fehlerobjekt zu stringifizieren, führt zu Ergebnissen in einem leeren Objekt ({}), was darauf hinweist, dass die Fehlerinformationen nicht vorhanden waren erfasst.
Ursache:
Das Problem liegt in den Prototypeigenschaften des Fehlerobjekts. Bei Schlüsseleigenschaften wie „stack“ und „message“ ist das Aufzählungsflag auf „false“ gesetzt. Folglich überspringt JSON.stringify diese Eigenschaften während des Serialisierungsprozesses und hinterlässt ein leeres Objekt.
Lösung:
Um dieses Verhalten zu umgehen, ist eine manuelle Extraktion erforderlich Die Eigenschaften des Error-Objekts mithilfe von Object.getOwnPropertyNames. Diese Eigenschaften können dann als Ersetzungsfunktion an JSON.stringify übergeben werden, um eine JSON-Zeichenfolge zu erstellen, die die Fehlerinformationen enthält:
JSON.stringify(err, Object.getOwnPropertyNames(err))
Alternativ können Sie Ihre eigenen benutzerdefinierten Fehlerobjekte mit aufzählbaren Eigenschaften erstellen. Dadurch können sie durch JSON.stringify korrekt stringifiziert werden.
Das obige ist der detaillierte Inhalt vonWarum kann JSON.stringify Fehlerobjekte nicht in Strings umwandeln und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!