English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NodeJS Base Tutorial

NodeJS Express.js

NodeJS Buffer & URL;

NodeJS MySql

NodeJS MongoDB

NodeJS Fichier (FS)

Autres NodeJS

Try Catch de Node.js

Try Catch de Node.js C'est un mécanisme de gestion des erreurs. Lorsqu'un segment de code est censé générer une erreur et est entouré d'un bloc try, toute exception levée dans ce segment de code peut être résolue dans le bloc catch. Si l'erreur n'est pas traitée de quelque manière que ce soit, le programme se termine soudainement, ce qui n'est pas une bonne chose.

Attention : il est préférable deTry Catch de Node.jsNe s'applique qu'aux opérations synchrones. Nous allons également comprendre pourquoi il ne faut pas utiliserTry CatchPour des opérations asynchrones.

  • Exemple de tentative de capture d'erreurs dans Node.js

  • Pourquoi ne pas utiliser Try Catch de Node.js pour capturer les erreurs dans les opérations asynchrones?

  • Que se passe-t-il avec les exceptions dans le code asynchrone ?

Exemple de tentative de capture d'erreurs dans Node.js

Dans cet exemple, nous allons utiliserEssayerUtilisé autour de segments de code pour lire des fichiers synchronementTry Catch

#example for Node.js Try Catch
var fs = require('fs'); 
 
try{ 
    // Le fichier n'existe pas
    var data = fs.readFileSync('sample.html'); 
 } catch (err) { 
    console.log(err); 
 } 
 
console.log("Continuons avec les autres instructions...");

Lorsque le programme suivant s'exécute...

Sortie en terminal

arjun@arjun-VPCEH26EN:~/nodejs$ node nodejs-try-catch-example.js  
 { Error: ENOENT: no such file or directory, open 'sample.html'
    at Object.fs.openSync (fs.js:652:18) 
    at Object.fs.readFileSync (fs.js:553:33) 
    at Object.<anonymous> (/nodejs/nodejs-try-catch-example.js:5:16) 
    at Module._compile (module.js:573:30) 
    at Object.Module._extensions..js (module.js:584:10) 
    at Module.load (module.js:507:32) 
    at tryModuleLoad (module.js:470:12) 
    at Function.Module._load (module.js:462:3) 
    at Function.Module.runMain (module.js:609:10) 
    at startup (bootstrap_node.js:158:16) 
  errno: -2, 
  code: 'ENOENT', 
  syscall: 'open', 
  Chemin: 'sample.html' 
Continuons avec les autres instructions..

Veuillez noter que le programme ne s'est pas arrêté soudainement, mais a continué à exécuter les instructions suivantes.

Maintenant, nous verrons ce qui se passe si nous ne n utilisons pas try catch pour la même opération ci-dessus.

# erreur sans Node.js Try Catch
var fs = require('fs'); 
 
// Essayons de lire le fichier de manière synchrone plutôt que de présenter le fichier
var data = fs.readFileSync('sample.html'); 
 
console.log("Continuons avec les autres instructions...");

Le code n'a pas de mécanisme de gestion des erreurs et le programme s'arrête soudainement, et les instructions suivantes ne s'exécutent pas.

Lorsque le programme suivant s'exécute...

Sortie en terminal

arjun@arjun-VPCEH26EN:~/nodejs$ node nodejs-try-catch-example-1.js  
/home/arjun/nodejs/nodejs-try-catch-example-1.js:1
 (function (exports, require, module, __filename, __dirname) { # exemple pour Node.js Try Catch
                                                              ^
 
SyntaxError: Token invalide ou inattendu
    at createScript (vm.js:74:10) 
    at Object.runInThisContext (vm.js:116:10) 
    at Module._compile (module.js:537:28) 
    at Object.Module._extensions..js (module.js:584:10) 
    at Module.load (module.js:507:32) 
    at tryModuleLoad (module.js:470:12) 
    at Function.Module._load (module.js:462:3) 
    at Function.Module.runMain (module.js:609:10) 
    at startup (bootstrap_node.js:158:16) 
    at bootstrap_node.js:598:3

Pourquoi ne pas utiliser Try Catch de Node.js pour capturer les erreurs dans les opérations asynchrones?

Considérons l'exemple suivant, où nous essayons d'utiliser une fonction de rappel asynchrone pour lire un fichier et de lever une erreur en cas de problème. Ensuite, nous entourons la tâche avec un bloc "essayer de capturer" dans l'espoir de capturer l'erreur levée.

# Try Catch avec Callback Asynchrone en Node.js
var fs = require('fs'); 
 
try{ 
    fs.readFile('sample.txta', 
        // Fonction de rappel
        function(err, data) {  
            if (err) throw err; 
    }); 
 } catch(err){ 
    console.log("Dans le bloc Catch") 
    console.log(err); 
 } 
console.log("Next Statements")

Sortie en terminal

arjun@arjun-VPCEH26EN:~/nodejs/try-catch$ node nodejs-try-catch-example-2.js  
Next Statements
/home/arjun/nodejs/try-catch/nodejs-try-catch-example-2.js:8
            if (err) throw err; 
                     ^
 
Erreur : ENOENT : fichier ou répertoire introuvable, ouvert 'sample.txta'

Si vous observez la sortie, veuillezConsole.Dansif(err)  lancer  errDéjà exécutélog("Next Statements")  C'est parce que, la lecture des fichiers est effectuée de manière asynchrone, et le contrôle ne attend pas la fin de l'opération de fichier, mais continue d'exécuter la directive next.Ce qui signifie que le contrôle n'est pas dans le bloc try catch.Si une erreur se produit pendant une opération asynchrone, le contrôle ne saura rien des blocs try catch.Par conséquent, notre bloc Try Catch ne peut pas capturer les erreurs qui peuvent se produire pendant une opération asynchrone, et les développeurs devraient éviter d'utiliserTry Catch de Node.jsBlocCaptureErreurs déclenchées par des tâches asynchrones

Que se passe-t-il avec les exceptions dans le code asynchrone ?

Si vous êtes confus sur ce qui se passe avec les exceptions dans le code asynchrone, voici la réponse. Si vous avez utilisé des fonctions de rappel Callback et que vous avez observé l'objet d'erreur en tant que paramètre, ici, vous devez rapporter tous les erreurs ou exceptions au Node.js.

Résumé :

Dans ce tutoriel Node.js – Try Catch dans Node.js,nous avons appris à utiliser Try Catch et les scénarios où il ne faut pas utiliser Try Catch.