KEMBAR78
node.js errors | PPTX
NodeJS - Errors
PEGGY
2016-06-17
Four Categories Of Errors
1. Standard JavaScript errors such as:
 <EvalError> : thrown when a call to eval() fails.
 <SyntaxError> : thrown in response to improper JavaScript language syntax.
 <RangeError> : thrown when a value is not within an expected range
 <ReferenceError> : thrown when using undefined variables
 <TypeError> : thrown when passing arguments of the wrong type
 <URIError> : thrown when a global URI handling function is misused.
RangeError
 A subclass of Error that indicates that a provided argument was not within the set
or range of acceptable values for a function
require('net').connect(-1);
D:FrameworknodeJs_errors>node test.js
net.js:954
throw new RangeError('"port" option should be >= 0 and < 65536: ' + port);
^
RangeError: "port" option should be >= 0 and < 65536: -1
at lookupAndConnect (net.js:954:13)
at Socket.connect (net.js:929:5)
at Object.exports.connect.exports.createConnection (net.js:70:35)
at Object.<anonymous> (D:FrameworknodeJs_errorstest.js:1:78)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Function.Module.runMain (module.js:575:10)
ReferenceError
 A subclass of Error that indicates that an attempt is being made to access a
variable that is not defined.
D:FrameworknodeJs_errors>node test.js
D:FrameworknodeJs_errorstest.js:1
(function (exports, require, module, __filename, __dirname) { test;
^
ReferenceError: test is not defined
at Object.<anonymous> (D:FrameworknodeJs_errorstest.js:1:63)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Function.Module.runMain (module.js:575:10)
at startup (node.js:160:18)
at node.js:449:3
test;
SyntaxError
 A subclass of Error that indicates that a program is not valid JavaScript.
D:FrameworknodeJs_errors>node test.js
D:FrameworknodeJs_errorstest.js:1
(function (exports, require, module, __filename, __dirname) { var 77 = 88;
^^
SyntaxError: Unexpected number
at Object.exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:513:28)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Function.Module.runMain (module.js:575:10)
at startup (node.js:160:18)
at node.js:449:3
var 77 = 88;
TypeError
 A subclass of Error that indicates that a provided argument is not an allowable
type.
D:FrameworknodeJs_errors>node test.js
D:FrameworknodeJs_errorstest.js:2
temp();
^
TypeError: temp is not a function
at Object.<anonymous> (D:FrameworknodeJs_errorstest.js:2:1)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Function.Module.runMain (module.js:575:10)
at startup (node.js:160:18)
at node.js:449:3
var temp = "test";
temp();
Four Categories Of Errors
2. System errors triggered by underlying operating system constraints such as
attempting to open a file that does not exist, attempting to send data over a
closed socket, etc
Four Categories Of Errors
3. User-specified errors triggered by application code.
4. Assertion Errors are a special class of error that can be triggered whenever Node.js
detects an exceptional logic violation that should never occur. These are raised
typically by the assert module.
Error Propagation and Interception
 Try/Catch
 Callback
 EventEmitter
Try/Catch
 All JavaScript errors are handled as exceptions that immediately generate and
throw an error using the standard JavaScript throw mechanism. These are handled
using the try / catch construct provided by the JavaScript language.
// Throws with a ReferenceError because z is undefined
try {
const m = 1;
const n = m + z;
} catch (err) {
// Handle the error here.
}
Callback
const fs = require('fs');
fs.readFile('a file that does not exist', (err, data) => {
if (err) {
console.error('There was an error reading the file!', err);
return;
}
// Otherwise handle the data
});
EventEmitter
const net = require('net');
const connection = net.connect('localhost');
// Adding an 'error' event handler to a stream:
connection.on('error', (err) => {
// If the connection is reset by the server, or if it can't
// connect at all, or on any sort of error encountered by
// the connection, the error will be sent here.
console.error(err);
});
Try / Catch with Asynchronous APIs
 The JavaScript try / catch mechanism cannot be used to intercept errors generated
by asynchronous APIs.
// THIS WILL NOT WORK:
const fs = require('fs');
try {
fs.readFile('/some/file/that/does-not-exist', (err, data) => {
// mistaken assumption: throwing here...
if (err) { throw err; }
});
} catch(err) {
// This will not catch the throw!
console.log(err);
}
Class: Error
const err = new Error('The message');
console.log(err.message);
console.log(err.stack);
Throw Error
function makeError() {
throw new Error('oh no!');
}
makeError(); // will throw:

node.js errors

  • 1.
  • 2.
    Four Categories OfErrors 1. Standard JavaScript errors such as:  <EvalError> : thrown when a call to eval() fails.  <SyntaxError> : thrown in response to improper JavaScript language syntax.  <RangeError> : thrown when a value is not within an expected range  <ReferenceError> : thrown when using undefined variables  <TypeError> : thrown when passing arguments of the wrong type  <URIError> : thrown when a global URI handling function is misused.
  • 3.
    RangeError  A subclassof Error that indicates that a provided argument was not within the set or range of acceptable values for a function require('net').connect(-1); D:FrameworknodeJs_errors>node test.js net.js:954 throw new RangeError('"port" option should be >= 0 and < 65536: ' + port); ^ RangeError: "port" option should be >= 0 and < 65536: -1 at lookupAndConnect (net.js:954:13) at Socket.connect (net.js:929:5) at Object.exports.connect.exports.createConnection (net.js:70:35) at Object.<anonymous> (D:FrameworknodeJs_errorstest.js:1:78) at Module._compile (module.js:541:32) at Object.Module._extensions..js (module.js:550:10) at Module.load (module.js:458:32) at tryModuleLoad (module.js:417:12) at Function.Module._load (module.js:409:3) at Function.Module.runMain (module.js:575:10)
  • 4.
    ReferenceError  A subclassof Error that indicates that an attempt is being made to access a variable that is not defined. D:FrameworknodeJs_errors>node test.js D:FrameworknodeJs_errorstest.js:1 (function (exports, require, module, __filename, __dirname) { test; ^ ReferenceError: test is not defined at Object.<anonymous> (D:FrameworknodeJs_errorstest.js:1:63) at Module._compile (module.js:541:32) at Object.Module._extensions..js (module.js:550:10) at Module.load (module.js:458:32) at tryModuleLoad (module.js:417:12) at Function.Module._load (module.js:409:3) at Function.Module.runMain (module.js:575:10) at startup (node.js:160:18) at node.js:449:3 test;
  • 5.
    SyntaxError  A subclassof Error that indicates that a program is not valid JavaScript. D:FrameworknodeJs_errors>node test.js D:FrameworknodeJs_errorstest.js:1 (function (exports, require, module, __filename, __dirname) { var 77 = 88; ^^ SyntaxError: Unexpected number at Object.exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:513:28) at Object.Module._extensions..js (module.js:550:10) at Module.load (module.js:458:32) at tryModuleLoad (module.js:417:12) at Function.Module._load (module.js:409:3) at Function.Module.runMain (module.js:575:10) at startup (node.js:160:18) at node.js:449:3 var 77 = 88;
  • 6.
    TypeError  A subclassof Error that indicates that a provided argument is not an allowable type. D:FrameworknodeJs_errors>node test.js D:FrameworknodeJs_errorstest.js:2 temp(); ^ TypeError: temp is not a function at Object.<anonymous> (D:FrameworknodeJs_errorstest.js:2:1) at Module._compile (module.js:541:32) at Object.Module._extensions..js (module.js:550:10) at Module.load (module.js:458:32) at tryModuleLoad (module.js:417:12) at Function.Module._load (module.js:409:3) at Function.Module.runMain (module.js:575:10) at startup (node.js:160:18) at node.js:449:3 var temp = "test"; temp();
  • 7.
    Four Categories OfErrors 2. System errors triggered by underlying operating system constraints such as attempting to open a file that does not exist, attempting to send data over a closed socket, etc
  • 8.
    Four Categories OfErrors 3. User-specified errors triggered by application code. 4. Assertion Errors are a special class of error that can be triggered whenever Node.js detects an exceptional logic violation that should never occur. These are raised typically by the assert module.
  • 9.
    Error Propagation andInterception  Try/Catch  Callback  EventEmitter
  • 10.
    Try/Catch  All JavaScripterrors are handled as exceptions that immediately generate and throw an error using the standard JavaScript throw mechanism. These are handled using the try / catch construct provided by the JavaScript language. // Throws with a ReferenceError because z is undefined try { const m = 1; const n = m + z; } catch (err) { // Handle the error here. }
  • 11.
    Callback const fs =require('fs'); fs.readFile('a file that does not exist', (err, data) => { if (err) { console.error('There was an error reading the file!', err); return; } // Otherwise handle the data });
  • 12.
    EventEmitter const net =require('net'); const connection = net.connect('localhost'); // Adding an 'error' event handler to a stream: connection.on('error', (err) => { // If the connection is reset by the server, or if it can't // connect at all, or on any sort of error encountered by // the connection, the error will be sent here. console.error(err); });
  • 13.
    Try / Catchwith Asynchronous APIs  The JavaScript try / catch mechanism cannot be used to intercept errors generated by asynchronous APIs. // THIS WILL NOT WORK: const fs = require('fs'); try { fs.readFile('/some/file/that/does-not-exist', (err, data) => { // mistaken assumption: throwing here... if (err) { throw err; } }); } catch(err) { // This will not catch the throw! console.log(err); }
  • 14.
    Class: Error const err= new Error('The message'); console.log(err.message); console.log(err.stack);
  • 15.
    Throw Error function makeError(){ throw new Error('oh no!'); } makeError(); // will throw: