Manejo de excepciones en Node.js

El manejo de excepciones se refiere al mecanismo mediante el cual se manejan las excepciones que ocurren en un código mientras se ejecuta una aplicación. Node.js admite varios mecanismos para propagar y manejar errores. 
Estos son los diferentes métodos que se pueden usar para el manejo de excepciones en Node.js: 
 

  • Manejo de excepciones en código síncrono: si ocurre un error en un código síncrono, devuelve el error. 
    Ejemplo: 
     

javascript

// Write Javascript code here
// Define divider as a synchronous function
var divideSync = function(x, y) {
    // if error condition?
    if ( y === 0 ) {
        // "throw" the error safely by returning it
        return new Error("Can't divide by zero")
    }
    else {
        // no error occurred, continue on
        return x/y
    }
}
 
// Divide 9/3
var result = divideSync(9, 3)
// did an error occur?
if ( result instanceof Error ) {
    // handle the error safely
    console.log("9/3=err", result)
}
else {
    // no error occurred, continue on
    console.log("9/3="+result)
}
 
// Divide 9/0
result = divideSync(9, 0)
// did an error occur?
if ( result instanceof Error ) {
    // handle the error safely
    console.log("9/0=err", result)
}
else {
    // no error occurred, continue on
    console.log("9/0="+result)
}
  • Producción: 
     

  • Manejo de excepciones en código basado en devolución de llamada (asincrónico): en código basado en devolución de llamada, uno de los argumentos de la devolución de llamada es err. Si ocurre un error, err es el error, si no ocurre un error, entonces err es nulo. El argumento err puede ir seguido de cualquier número de otros argumentos. 
    Ejemplo: 
     

javascript

// Write Javascript code here
var divide = function(x, y, next) {
    // if error condition?
    if ( y === 0 ) {
        // "throw" the error safely by calling the completion callback
        // with the first argument being the error
        next(new Error("Can't divide by zero"))
    }
    else {
        // no error occurred, continue on
        next(null, x/y)
    }
}
 
divide(9, 3, function(err, result){
    // did an error occur?
    if ( err ) {
        // handle the error safely
        console.log("9/3=err", err)
    }
    else {
        // no error occurred, continue on
        console.log("9/3="+result)
    }
})
 
divide(9, 0, function(err, result){
    // did an error occur?
    if ( err ) {
        // handle the error safely
        console.log("9/0=err", err)
    }
    else {
        // no error occurred, continue on
        console.log("9/0="+result)
    }
})
  • Producción: 
     

  • Manejo de excepciones en código lleno de eventos: en un código lleno de eventos, el error puede ocurrir en cualquier lugar. Entonces, en lugar de arrojar el error, active el evento de error. 
    Ejemplo: 
     

javascript

// Write Javascript code here
// Definite our Divider Event Emitter
var events = require("events")
var Divider = function(){
    events.EventEmitter.call(this)
}
require('util').inherits(Divider, events.EventEmitter)
 
// Add the divide function
Divider.prototype.divide = function(x, y){
    // if error condition?
    if ( y === 0 ) {
        // "throw" the error safely by emitting it
        var err = new Error("Can't divide by zero")
        this.emit("error", err)
    }
    else {
        // no error occurred, continue on
        this.emit("divided", x, y, x/y)
    }
 
    // Chain
    return this;
}
 
// Create our divider and listen for errors
var divider = new Divider()
divider.on('error', function(err){
    // handle the error safely
    console.log(err)
})
divider.on('divided', function(x, y, result){
    console.log(x+"/"+y+"="+result)
})
 
// Divide
divider.divide(9, 3).divide(9, 0)
  • Producción: 
     

Publicación traducida automáticamente

Artículo escrito por chaitanyashah707 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *