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

NodeJS Tutorial Básico

NodeJS Express.js

NodeJS Buffer & URL;

NodeJS MySql

NodeJS MongoDB

NodeJS Archivo (FS)

Otras de NodeJS

Try Catch en Node.js

Try Catch en Node.js Es un mecanismo de manejo de errores. Cuando se espera que un fragmento de código lance un error y esté envuelto en try, cualquier excepción lanzada en el fragmento de código se puede resolver en el bloque catch. Si no se maneja el error de ninguna manera, el programa se detendrá repentinamente, lo que no es bueno.

Nota: Es mejor usarTry Catch en Node.jsSólo para operaciones sincrónicas. También aprenderemos por qué no se debe usarTry CatchPara operaciones asincrónicas.

  • Ejemplo de captura de errores de Node.js

  • Why not use Node.js Try Catch to catch errors in asynchronous operations?

  • ¿Qué sucederá con las excepciones en el código asíncrono?

Ejemplo de captura de errores de Node.js

En este ejemplo, vamos a utilizarIntentarAlrededor del código de lectura sincrónica de archivos se utilizaTry Catch.

#example for Node.js Try Catch
var fs = require('fs'); 
 
try{ 
    // El archivo no se encuentra
    var data = fs.readFileSync('sample.html'); 
 } catch (err) { 
    console.log(err); 
 } 
 
console.log("Continuing with other statements...");

When the above program runs...

Salida de 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', 
  path: 'sample.html'} 
Continuing with other statements..

Please note that the program does not terminate abruptly but continues to execute the subsequent statements.

Now, let's see what happens if we do not use try catch for the same operation above.

# error without Node.js Try Catch
var fs = require('fs'); 
 
// Attempt to read the file synchronously instead of presenting the file
var data = fs.readFileSync('sample.html'); 
 
console.log("Continuing with other statements...");

There is no error handling mechanism in the code, and the program terminates abruptly without executing the subsequent statements.

When the above program runs...

Salida de terminal

arjun@arjun-VPCEH26EN:~/nodejs$ node nodejs-try-catch-ejemplo-1.js  
/home/arjun/nodejs/nodejs-try-catch-ejemplo-1.js:1
 (function (exports, require, module, __filename, __dirname) { # example for Node.js Try Catch
                                                              ^
 
SyntaxError: Invalid or unexpected token
    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

Why not use Node.js Try Catch to catch errors in asynchronous operations?

Consider the following example, in which we attempt to asynchronously read a file using a callback function and throw an error if a problem occurs. Then, we wrap the task with a 'try to catch' block, hoping to catch the thrown error.

# Try Catch en Node.js con Función de Callback Asincrónica
var fs = require('fs'); 
 
try{ 
    fs.readFile('sample.txta', 
        // Función de callback
        function(err, data) {  
            if (err) throw err; 
    }); 
 } catch(err){ 
    console.log("En Bloque Catch") 
    console.log(err); 
 } 
console.log("Next Statements")

Salida de terminal

arjun@arjun-VPCEH26EN:~/nodejs/try-catch$ node nodejs-try-catch-ejemplo-2.js  
Next Statements
/home/arjun/nodejs/try-catch/nodejs-try-catch-ejemplo-2.js:8
            if (err) throw err; 
                     ^
 
Error: ENOENT: No se encontró el archivo o directorio, abrir 'sample.txta'

Si observas la salida, por favorConsola.enif(err)  throw  errSe ha ejecutado anteriormentelog("Instrucciones Next")  ,porque, la lectura de archivos se realiza de manera asíncrona y el controlador no espera que la operación de archivo se complete, sino que continúa ejecutando la instrucción next.Esto significa que el controlador no está dentro del bloque try catch.Si ocurre un error durante la operación asíncrona, el controlador no sabrá nada sobre cualquier bloque try catch.Por lo tanto, nuestro bloque Try Catch no puede capturar errores que puedan ocurrir durante la operación asíncrona, y los desarrolladores deben evitar su uso.Try Catch en Node.jsBloqueCapturaErrores generados por tareas asíncronas.

¿Qué sucederá con las excepciones en el código asíncrono?

Si te sientes confundido sobre lo que sucederá con las excepciones en el código asíncrono, esta es la respuesta. Si ya has pasado un callback de función y has observado que el objeto de error se pasa como parámetro, aquí se deben informar todos los errores o excepciones de vuelta a Node.js.

Resumen:

En este tutorial de Node.js – Try Catch en Node.js,aprendimos a usar Try Catch y las situaciones en las que no se debe usar Try Catch.