Comment gérer correctement les erreurs en javascript?
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);
}
Pour gérer l'erreur dans one
, vous utilisez un try
/ catch
in 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();