Heim > Web-Frontend > js-Tutorial > Warum gibt JSON.stringify beim Serialisieren eines Fehlers ein leeres Objekt zurück?

Warum gibt JSON.stringify beim Serialisieren eines Fehlers ein leeres Objekt zurück?

Mary-Kate Olsen
Freigeben: 2024-12-02 15:55:11
Original
857 Leute haben es durchsucht

Why Does JSON.stringify Return an Empty Object When Serializing an Error?

Ist es unmöglich, einen Fehler mit JSON.stringify zu stringifizieren?

Der Versuch, eine Fehlerinstanz mit JSON.stringify zu serialisieren, führt zu einem leeren Objekt. Dieses Verhalten ergibt sich aus den versteckten Eigenschaftsdeskriptoren des Fehlers.

Warum JSON.stringify fehlschlägt:

Eigenschaftsdeskriptoren für Fehlerinstanzen werden mit enumerable: false festgelegt, wodurch deren verhindert wird Eigenschaften werden nicht in die Stringifizierung einbezogen.

Untersuchen von Eigenschaften und Deskriptoren:

const error = new Error('sample message');
const propertyNames = Object.getOwnPropertyNames(error);
propertyNames.forEach(property => console.log(property, Object.getOwnPropertyDescriptor(error, property)));
Nach dem Login kopieren

Ausgabe:

stack { get: [Function], set: [Function], enumerable: false, configurable: true }
arguments { value: undefined, writable: true, enumerable: false, configurable: true }
type { value: 'custom message', writable: true, enumerable: false, configurable: true }
message { value: 'custom message', writable: true, enumerable: false, configurable: true }
Nach dem Login kopieren

Problemumgehung mit Object.getOwnPropertyNames:

Um Fehlereigenschaften in die Stringifizierung einzubeziehen, Verwenden Sie JSON.stringify(err, Object.getOwnPropertyNames(err)). Dies ermöglicht den Zugriff auf nicht aufzählbare Eigenschaften.

const serializedError = JSON.stringify(error, Object.getOwnPropertyNames(error));
Nach dem Login kopieren

Zusätzliche Problemumgehungen:

  • Benutzerdefinierte Fehlerobjekte: Erstellen Sie benutzerdefinierte Fehlerobjekte mit gewünschten Eigenschaften und serialisieren Sie diese.
  • Eigenschaftsextraktion:Extrahieren Bestimmte Fehlereigenschaften manuell mithilfe von error.stack und error.message.

Das obige ist der detaillierte Inhalt vonWarum gibt JSON.stringify beim Serialisieren eines Fehlers ein leeres Objekt zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage