0.2.0 • Published 10 years ago
oerror v0.2.0
OError
Customizable Error using an Object. It is a subclass of Node.js standard Class: Error, with the overridden behavior when the constructor argument is a plain key-value Object.
Install
npm install -save oerror
Usage
var OError = require('./oerror');
var err = new OError({
name: 'ServerError',
statusCode: 500,
message: 'DB Connection Lost',
details: {
component: 'MongoDB',
timeout: 15000
}
});
/* Type */
console.log(err instanceof OError); // true
console.log(err instanceof Error); // true
/* Inherited Properties */
console.log(err.message); // DB Connection Lost
console.log(err.name); // ServerError
console.error(err.stack);
// ServerError: DB Connection Lost
// at Object.<anonymous> (/Users/woozyking/proj/personal/oerror/test.js:3:11)
// at Module._compile (module.js:413:34)
// at Object.Module._extensions..js (module.js:422:10)
// at Module.load (module.js:357:32)
// at Function.Module._load (module.js:314:12)
// at Function.Module.runMain (module.js:447:10)
// at startup (node.js:140:18)
// at node.js:1001:3
/* Other Properties */
console.log(err.statusCode); // 500
console.log(err.details); // { component: 'MongoDB', timeout: 15000 }
console.log(err.details.component); // MongoDBIf you get too comfortable with OError:
Error = require('oerror'); // USE WITH CAUTIONSince 0.2 you can use the function wrapper if you prefer not to use the new OError syntax.
var oerror = require('oerror').oerror;
var err = oerror({ /* OError constructor options */ });Properties
Class: OError inherits the following standard properties from Error:
name- when supplied through the constructor argument, it gets used; otherwise defaults toOError.message- this behaves as the standard Error constructor argument, which specifies the error message. Although not required, it is recommended to set it.stack- see Usage for example. It cannot be overridden even constructor argument contains one.
All other properties that are unowned by Error (therefore also OError) type will get copied over, see Usage for example.
Behaviors
Class: OError
new OError([opt])
✓ should create an instance of OError when opt is a plain object.
✓ should return an Error object when opt is an Error object.
✓ should return an OError object when opt is an OError object.
✓ should return an Error object when opt is a string.
✓ should return an OError object when opt is null.
✓ should return an Error object when opt is not a plain object, string, null, or Error (including Error subclasses).
oerror.name
✓ should have the name property default to "OError"
✓ should have the name property set to opt.name value
oerror.message
✓ should have the message property default to ""
✓ should have the message property set to opt.message value
oerror.stack
✓ cannot be overridden by constructor argument opt.stack
✓ should contain <name>: <message> in the first line
oerror.<others>
✓ should copy over all Error unowned properties from opt
Function wrapper: oerror([opt])
✓ should create an instance of OError when opt is a plain object.
✓ should return an Error object when opt is an Error object.
✓ should return an OError object when opt is an OError object.
✓ should return an Error object when opt is a string.
✓ should return an OError object when opt is null.
✓ should return an Error object when opt is not a plain object, string, null, or Error (including Error subclasses).