Node.js
Node.js-Fehlerverwaltung
Suche…
Einführung
Wir werden lernen, Fehlerobjekte zu erstellen und Fehler in Node.js zu werfen und zu behandeln
Zukünftige Änderungen bezogen sich auf bewährte Vorgehensweisen bei der Fehlerbehandlung.
Fehlerobjekt erstellen
neuer Fehler (Nachricht)
Erstellt ein neues Fehlerobjekt, bei dem der Wert message
auf message
property des erstellten Objekts festgelegt wird. Normalerweise werden die message
als String an den Error-Konstruktor übergeben. Wenn das message
jedoch object und kein String ist, ruft der Error-Konstruktor die .toString()
-Methode des übergebenen Objekts auf und setzt diesen Wert auf message
Eigenschaft des erstellten .toString()
.
var err = new Error("The error message");
console.log(err.message); //prints: The error message
console.log(err);
//output
//Error: The error message
// at ...
Jedes Fehlerobjekt verfügt über eine Stapelablaufverfolgung. Der Stack-Trace enthält die Informationen zur Fehlermeldung und zeigt an, wo der Fehler aufgetreten ist (die obige Ausgabe zeigt den Fehler-Stack). Sobald das Fehlerobjekt erstellt wurde, erfasst das System den Stack-Trace des Fehlers in der aktuellen Zeile. Um den Stack-Trace abzurufen, verwenden Sie die stack -Eigenschaft aller erstellten Fehlerobjekte. Unten sind zwei Zeilen identisch:
console.log(err);
console.log(err.stack);
Fehler werfen
Auslöser Fehler bedeutet Ausnahme Wenn keine Ausnahme behandelt wird, stürzt der Knotenserver ab.
Die folgende Zeile wirft einen Fehler:
throw new Error("Some error occurred");
oder
var err = new Error("Some error occurred");
throw err;
oder
throw "Some error occurred";
Das letzte Beispiel (das Auslösen von Strings) ist nicht empfehlenswert und wird nicht empfohlen (werfen Sie immer Fehler, die Instanzen eines Fehlerobjekts sind).
Beachten Sie throw
dass das System in dieser Zeile abstürzt, wenn Sie einen Fehler auslösen (wenn keine Ausnahmebehandlungsroutinen vorhanden sind). Danach wird kein Code ausgeführt.
var a = 5;
var err = new Error("Some error message");
throw err; //this will print the error stack and node server will stop
a++; //this line will never be executed
console.log(a); //and this one also
Aber in diesem Beispiel:
var a = 5;
var err = new Error("Some error message");
console.log(err); //this will print the error stack
a++;
console.log(a); //this line will be executed and will print 6
versuchen Sie ... catch block
try ... catch-Block ist für die Behandlung von Ausnahmen gedacht. Ausnahmebedingungen bedeuten, dass der ausgelöste Fehler nicht der Fehler ist.
try {
var a = 1;
b++; //this will cause an error because be is undefined
console.log(b); //this line will not be executed
} catch (error) {
console.log(error); //here we handle the error caused in the try block
}
Im try
Block verursachen b++
einen Fehler und dieser Fehler wird an catch
Block übergeben, der dort gehandhabt werden kann oder sogar den gleichen Fehler im catch-Block werfen kann oder eine kleine Bitänderung vornehmen und dann werfen kann. Schauen wir uns das nächste Beispiel an.
try {
var a = 1;
b++;
console.log(b);
} catch (error) {
error.message = "b variable is undefined, so the undefined can't be incremented"
throw error;
}
Im obigen Beispiel haben wir die message
des error
geändert und den geänderten error
.
Sie können jeden Fehler in Ihrem try-Block durchgehen und im catch-Block behandeln:
try {
var a = 1;
throw new Error("Some error message");
console.log(a); //this line will not be executed;
} catch (error) {
console.log(error); //will be the above thrown error
}