Node.js
Node.js Felhantering
Sök…
Introduktion
Vi kommer att lära dig att skapa felobjekt och hur man kastar och hanterar fel i Node.js
Framtida redigeringar relaterade till bästa praxis vid felhantering.
Skapar felobjekt
nytt fel (meddelande)
Skapar ett nytt felobjekt där message
ställs in på message
för det skapade objektet. Vanligtvis vidarebefordras message
till Error constructor som en sträng. Men om message
är objekt inte en sträng kallar .toString()
-metoden för det passerade objektet och sätter det värdet till message
för det skapade felobjektet.
var err = new Error("The error message");
console.log(err.message); //prints: The error message
console.log(err);
//output
//Error: The error message
// at ...
Varje felobjekt har stapelspår. Stack trace innehåller informationen om felmeddelandet och visar var felet inträffade (ovanstående utgång visar felstacken). När felobjekt har skapats fångar systemet stapelspåret för felet på den aktuella raden. För att få spår av stacken, använd stackegenskapen för alla skapade felobjekt. Under två rader är identiska:
console.log(err);
console.log(err.stack);
Kasta fel
Att kasta fel betyder undantag om något undantag inte hanteras kommer nodservern att krascha.
Följande rad kastar fel:
throw new Error("Some error occurred");
eller
var err = new Error("Some error occurred");
throw err;
eller
throw "Some error occurred";
Det sista exemplet (kasta strängar) är inte god praxis och rekommenderas inte (kast alltid fel som är fall av felobjekt).
Observera att om du throw
ett fel i din, kommer systemet att krascha på den raden (om det inte finns något undantagshanterare), kommer ingen kod att köras efter den raden.
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
Men i detta exempel:
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
försök ... fånga block
försök ... fångstblock är för att hantera undantag, kom ihåg undantag betyder att det kastade felet inte felet.
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
}
I try
b++
orsakar ett fel och det felet skickas till catch
som kan hanteras där eller till och med kan kastas samma fel i fångstblocket eller göra lite ändring sedan kast. Låt oss se nästa exempel.
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;
}
I exemplet ovan ändrade vi message
för error
och kastade sedan det modifierade error
.
Du kan genom något fel i ditt försöksblock och hantera det i fångstblocket:
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
}