When you have an error-ish but what you really want is an Error
npm install errorish


> When you have an error-ish but what you really want is an Error.
There are three main use cases for Errorish:
* You need to make sure an Error has a message, name, and stack properties.
You need to make sure any* object is actually an error, as expected.
* You want to extend the Error class to store an identifying label, a source error, and/or associated data.
Exception is an Error* extending class with additional label, error and data fields.
* Utils:
* ensure ensures any is an Error, otherwise creating one -it can optionally include a normalization step, enabled by default.
* normalize ensures an Error has a message, name, and stack properties -filling them if they're not defined.
* capture runs Error.captureStackTrace if running in V8 to clean up the error stack trace.
See documentation for Exception.
Exception is an Error extending class that can store an identifying label, the source error that caused it and/or additional associated data. Exception also comes with several static and instance methods.
``javascript
import { Exception } from 'errorish';
try {
try {
throw new Error('Source');
} catch (err) {
// throws with label
throw new Exception(['label', 'message'], err, { code: 401 });
}
} catch (err) {
// throws without label
throw new Exception(err.message, err, { code: 500 })
}
`
#### ensure
Ensure will return its first argument if an instance of Error is passed as such, otherwise instantiating and returning an Exception.
`javascript
import { ensure } from 'errorish';
ensure('foo'); // Error: foo
ensure(new Error('foo')); // Error: foo
ensure({ message: 'foo' }); // Error: foo
`
#### normalize
See documentation for normalize.
Normalization fills an error's message, name, and stack property when empty. It's performed by default by ensure, but it can also be run independently.
`javascript
import { normalize } from 'errorish';
normalize(new Error()); // Error: An error occurred
normalize(new Error(), { message: 'Foo bar' }); // Error: Foo bar
`
#### capture
See documentation for capture.
Captures the stack trace on Node and Chromium browsers.
`javascript
import { capture } from 'errorish';
capture(new Error());
``