errorish
v2.0.0
Published
When you have an error-ish but what you really want is an Error
Downloads
7,840
Maintainers
Readme
Errorish
When you have an error-ish but what you really want is an Error.
Install
Use cases
There are three main use cases for Errorish:
- You need to make sure an
Error
has amessage
,name
, andstack
properties. - You need to make sure any object is actually an error, as expected.
- You want to extend the
Error
class to store an identifyinglabel
, a sourceerror
, and/or associateddata
.
Usage
Exception
is an Error extending class with additionallabel
,error
anddata
fields.- Utils:
ensure
ensuresany
is anError
, otherwise creating one -it can optionally include a normalization step, enabled by default.normalize
ensures anError
has amessage
,name
, andstack
properties -filling them if they're not defined.capture
runsError.captureStackTrace
if running inV8
to clean up the error stack trace.
Exception
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.
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 })
}
Utils
ensure
Ensure will return its first argument if an instance of Error
is passed as such, otherwise instantiating and returning an Exception
.
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.
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.
import { capture } from 'errorish';
capture(new Error());