Custom errors are useful when you want to track code with context-specific information. There are several ways to define a custom error in JavaScript. But since inheritance is not a first-citizen feature in JS (until ES2015); there's also so much discussion on how to define a proper custom error.
This module tests various implementations for custom errors, widely used by developers; such as methods making use of Error.call()
, Object.create()
, new Error()
, Object.setPrototypeOf()
, extends
(ES2015) and util.inherits
(Node). See /errors
directory for included implementations.
What we expect from a custom error implementation is:
e.constructor.name
MUST get our custom error name.E.prototype
MUST inherit fromError.prototype
.e.message
MUST be set.e
MUST be an instance ofError
.e
MUST be an instance ofCustomError
.e.stack
MUST be set and should have line-tracable info.e.tostring()
MUST return error name and/or message.({}).toString.call(e)
SHOULD output"error"
.- and some more...
npm i custom-error-test
to install.
Run npm start
which will output test results to console for the current Node.js environment. And will also generate an HTML file, which will display results for the used browser.
Better, you can directly view this page for testing your current browser.
MIT.