Recherche…


Introduction

Nous allons apprendre à créer des objets Error et à lancer et gérer des erreurs dans Node.js

Modifications futures liées aux meilleures pratiques en matière de gestion des erreurs.

Création d'un objet d'erreur

nouvelle erreur (message)

Crée un nouvel objet d'erreur, où le message valeur est défini sur la propriété message de l'objet créé. En général, les arguments du message sont transmis au constructeur en tant que chaîne. Toutefois, si l'argument de message est object et non une chaîne, le constructeur Error appelle la méthode .toString() de l'objet passé et définit cette valeur sur la propriété message de l'objet d'erreur créé.

var err = new Error("The error message");
console.log(err.message); //prints: The error message
console.log(err);
//output
//Error: The error message
//    at ... 

Chaque objet d'erreur a une trace de pile. La trace de pile contient les informations du message d'erreur et indique où l'erreur s'est produite (la sortie ci-dessus montre la pile d'erreur). Une fois l'objet d'erreur créé, le système capture la trace de la pile de l'erreur sur la ligne en cours. Pour obtenir la trace de la pile, utilisez la propriété stack de tout objet d'erreur créé. En dessous de deux lignes sont identiques:

console.log(err);
console.log(err.stack);

Erreur de lancer

L'erreur de lancer signifie une exception si une exception n'est pas gérée, le serveur de noeud se bloque.

La ligne suivante génère une erreur:

throw new Error("Some error occurred"); 

ou

var err = new Error("Some error occurred");
throw err;

ou

throw "Some error occurred";

Le dernier exemple (lancer des chaînes) n'est pas une bonne pratique et n'est pas recommandé (lancez toujours des erreurs qui sont des instances d'objet Error).

Notez que si vous throw une erreur dans votre système, le système se bloquera sur cette ligne (s'il n'y a pas de gestionnaire d'exceptions), aucun code ne sera exécuté après cette ligne.

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

Mais dans cet exemple:

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

essayer ... attraper un bloc

try ... catch block est pour gérer les exceptions, mémoriser l'exception signifie que l'erreur renvoyée n'est pas l'erreur.

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
}

Dans le bloc try , b++ provoque une erreur et cette erreur transmise au bloc catch qui peut être manipulé ou même peut être renvoyée à la même erreur dans le bloc catch ou faire une petite modification, puis lancer. Voyons l'exemple suivant.

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;
}

Dans l'exemple ci-dessus, nous avons modifié la propriété message de l'objet error , puis lancé l' error modifiée.

Vous pouvez par toute erreur dans votre bloc try et le gérer dans le bloc catch:

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow