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 
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow