An extension of vanilla JS errors, that adds two fields:
- code
- details
There are a few good reasons to add these fields to a standard error object.
-
Resuable error objects were few and far in-between in the author's experience with build complex nodejs projects.
-
custom errors, that extend the base error object, while a nobel thought, are too much work for a single use error objects. When absolutely needed, the
.code
property, set to a unique value suffices. -
In most cases of error, passing an error message with some details from the execution context suffices to provide debuggable hints. Further, using logging solutions like winston, it's easy to log these to any log collector.
log.error(err.message, err.details);
Ooh, and this is developed in TypeScript, because it rocks!
npm install error-deets
Throwing an error
import { ErrorDeets as Error } from 'error-deets';
throw new Error(`a unique error message`, {
details: {
some: 'object with details'
},
code: 'StringOrNumOrTypeScriptEnum'
});
Catching and logging an error
try {
someFunThatThrow();
} catch (err) {
log.error(err.message, err.details);
}
This project is released with a Contributor Code of Conduct. By participating, you agree to abide by its terms.
Bugs, PRs, comments, suggestions welcomed!