Comment gérer correctement les erreurs en javascript?


Nicolas Stadler

J'ai trois fonctions, chacune appelant une autre fonction.

function one() {
   two();
}

function two() {
   three();
}

function three() {
   // here an error will occur, and then should be resolved
   try {
      // whatever
   } catch (e) {
      // here should the error be resolved;
   }

}

Maintenant, ma question est de savoir comment faire pour que lors de l'appel de one (), l'erreur qui se produira dans trois () sera transmise à la fonction deux (), puis à la fonction un () qui fait alors quelque chose avec l'erreur UNIQUEMENT avec la fonction pouvez. Je l'ai essayé avec des rappels mais cela n'a pas fonctionné et avec try / catch, mais comme je suis nouveau dans tout ce problème de résolution d'erreur, j'ai probablement foiré quelque chose. Voici mes tentatives de rappel et essayez catch:

function one() {
   try {
     two();
   } catch (e) {
     console.log(e);
   }
}

function two() {
  try {
   three();
  } catch (e) {
    return e;
  }
}

function three() {
   // here an error will occur, and then should be resolved
   try {
      // whatever
   } catch (e) {
      return new Error("ERROR");
   }

}

Rappels:

function one(function (err) {
  if (err == "ERROR") { 
       console.log("everything worked");
  } else { throw err }
});



function two(callback) {
  try {
     three(callback);
  } catch (e) {
     return callback(e);
  }

 function three(callback) {
     try {
        //whatever
    } catch (e) {
      return callback(new Error("ERROR");
    }
  }

Je devrais peut-être expliquer sur quoi je travaille. J'ai une fonction qui lit les données d'un fichier par son nom de fichier, puis renvoie les données. Une autre fonction reçoit ces données et les manipule, mais je me concentre uniquement sur la réception. Cela a également le chemin des paramètres. Fondamentalement, cela ressemble à ceci:

function main() {
  try {
manipulateData("C:\\......");//That file doesnt exist, so an error will occur
   } catch (e) {
      return console.log("Error": e);
   }
}

function manipulateData(path) {
    var data = getUserdata(path);
    .....
}

function getUserdata(path) {
    return fs.readFileSync(path);
}
TJ Crowder

Pour gérer l'erreur dans one, vous utilisez un try/ catchin one:

function one() {
    console.log(`in one`);
    try {
        two();
    } catch (e) {
        console.log(`handling error "${e.message}...`);
        console.log("continuing work...");
    }
}

function two() {
    console.log(`in two`);
    three();
}

function three() {
    console.log(`in three`);
    // Error is caused here:
    null.example();
}

one();

Articles connexes


Comment gérer les erreurs et utiliser correctement les promesses

anny123 Pour commencer, je prends la suite de cette question que j'ai postée il y a quelques instants Maintenant, je pensais connaître Aysnc et Promise, mais il me manque clairement quelque chose. En référence à la réponse taguée par estus , À moins que l'API

Gérer correctement les erreurs

user6467981: En général, dans Go, vous trouvez la convention suivante: res, err := thingThatCanError(arg) if err != nil { // handle it } Cependant, il est évident que cela devient TRÈS indiscipliné très rapidement pour un grand nombre de ces appels:

Comment gérer correctement les erreurs avec async/wait

oscar J'écris une API où j'ai un peu de mal avec la gestion des erreurs. Ce dont je ne suis pas sûr, c'est si le premier extrait de code est suffisant ou si je dois le mélanger avec des promesses comme dans le deuxième extrait de code. Toute aide serait très a

Comment gérer correctement les erreurs asynchrones dans nodejs

mains Le code ci-dessous explique deux codes asynchrones dans le processus async principal. mon problème était "userController.insertUser" - a attrapé une erreur mais cette erreur n'a pas pu lancer la capture principale DataMiddleware.DataValidate(Object).then

Comment gérer correctement les erreurs dans Laravel?

Ripperakos Je voulais savoir comment gérer correctement les erreurs. Ceci est un bloc de mon formulaire. Si je tape dans le champ un enregistrement déjà existant dans ma base de données avec le même nom_équipe, cela me donne une violation de contrainte d'intég

Comment gérer correctement les erreurs de connexion PDO?

Nino J'essaie de gérer ou d'attraper d'éventuelles erreurs avec PHP / MySQL pour des raisons de sécurité et j'aimerais savoir si je le fais correctement. Le premier cas: je l'utilise comme une fonction et je l'appelle toujours lorsque j'ai besoin d'une connexi

API Laravel, comment gérer correctement les erreurs

Jessy Quelqu'un sait quelle est la meilleure façon de gérer les erreurs dans Laravel, il y a des règles ou quelque chose à suivre? Actuellement, je fais ceci: public function store(Request $request) { $plate = Plate::create($request->all()); if ($plate) {

Comment gérer correctement les erreurs de demande-promesse?

RavenHursT J'utilise donc request-promise dans un script que j'ai qui parcourt une liste d'urls et de feux de requêtes. Ensuite, je veux faire quelque chose avec les données reçues une fois que toutes les demandes sont complètes. J'ai ce qui suit: var rp = req

Fonctions Firebase Comment gérer correctement les erreurs

shmibbles REMARQUE: cette question concerne principalement la gestion des erreurs, et s'il s'agit d'une approche correcte, pas de promesses d'imbrication, veuillez lire avant de fermer Puisqu'il n'y a actuellement aucun code d'erreur pour des services comme la