In
any case, if the event emitter emits an error, then node.js application exit by
printing stack trace.
Let
us see this behavior with an example.
For
example
myClockEmitter.emit("error",
new Error("Error occured while handling the request"));
Above
statement emits an error.
var EventEmitter = require('events').EventEmitter; class ClockEmitter extends EventEmitter {}; var myClockEmitter = new ClockEmitter(); myClockEmitter.on("hoursChange", (hour, minutes, seconds) => { console.log(`Hour changed: ${hour}:${minutes}:${seconds}`); }); myClockEmitter.emit("error", new Error("Error occured while handling the request")); myClockEmitter.emit("hoursChange", 1, 51, 23); myClockEmitter.emit("hoursChange", 2, 51, 23);
When
you ran above application, you will end up in below error.
events.js:167 throw er; // Unhandled 'error' event ^ Error: Error occured while handling the request at Object.<anonymous> (C:\Users\Krishna\Documents\Study\nodejs\examples\HelloWorld.js:12:30) at Module._compile (internal/modules/cjs/loader.js:689:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10) at Module.load (internal/modules/cjs/loader.js:599:32) at tryModuleLoad (internal/modules/cjs/loader.js:538:12) at Function.Module._load (internal/modules/cjs/loader.js:530:3) at Function.Module.runMain (internal/modules/cjs/loader.js:742:12) at startup (internal/bootstrap/node.js:266:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3) Emitted 'error' event at: at Object.<anonymous> (C:\Users\Krishna\Documents\Study\nodejs\examples\HelloWorld.js:12:16) at Module._compile (internal/modules/cjs/loader.js:689:30) [... lines matching original stack trace ...] at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3)
How to handle the
errors?
Just
handle the error event like below.
myClockEmitter.on('error',
(err) => {
console.error('whoops! there was an error');
});
Find
the below working application.
var EventEmitter = require('events').EventEmitter; class ClockEmitter extends EventEmitter {}; var myClockEmitter = new ClockEmitter(); myClockEmitter.on("hoursChange", (hour, minutes, seconds) => { console.log(`Hour changed: ${hour}:${minutes}:${seconds}`); }); myClockEmitter.on('error', (err) => { console.error('whoops! there was an error'); }); myClockEmitter.emit("error", new Error("Error occured while handling the request")); myClockEmitter.emit("hoursChange", 1, 51, 23); myClockEmitter.emit("hoursChange", 2, 51, 23);
Output
whoops!
there was an error
Hour
changed: 1:51:23
Hour
changed: 2:51:23
No comments:
Post a Comment