cero
v0.4.1
Published
Base error class which helps you better organize and track your errors.
Downloads
23
Readme
cero
Base error class which helps you better organize and track your errors.
Features
- Predefined error codes for better error structuring and reusing common errors,
- Custom error message formatters,
- Scoped errors.
Install
npm i cero
Usage
import createErrorFactory from 'cero';
// Create custom errors fabric, which will alows us to create scoped errors.
// If you describe all your module errors like this, it will be easy to be consistent
// and change error messages and their formats from single place.
const myErrorFactory = createErrorFactory('MyProjectError', {
NOT_FOUND: 'Object "{name}" not found!',
HTTP_ERROR(data) {
const msg = data.msg + (data.reason ? ''data.reason : '');
return '[' + data.code + '] HTTP Error — ' + msg;
}
});
// Now we can create scopped error.
// Scope might be your module name or something else.
const MyModuleError = myErrorFactory('awesome-module');
// And now we can throw an error with specified code.
try {
throw new MyModuleError('NOT_FOUND', { name: 'Blog post about cero' });
} catch (e) {
console.error(e); //eslint-disable-line
// { [MyProjectError: #awesome-module [NOT_FOUND] — Object "Blog post about cero" not found!]
// name: 'MyProjectError',
// code: 'NOT_FOUND',
// message: '#awesome-module [NOT_FOUND] — Object "Blog post about cero" not found!' }
}
// Or with more complex formatter
try {
throw new MyModuleError('HTTP_ERROR', {
msg: 'Blog post about cero doesnt`t exist yet',
reason: 'I haven`t written it yet!'
});
} catch (e) {
console.error(e); //eslint-disable-line
// { [MyProjectError: #awesome-module [HTTP_ERROR] — [undefined] HTTP Error — Blog post about cero doesnt`t exist yet — I haven`t written it // yet!]
// name: 'MyProjectError',
// code: 'HTTP_ERROR',
// message: '#awesome-module [HTTP_ERROR] — [undefined] HTTP Error — Blog post about cero doesnt`t exists yet — I haven`t written it yet!' }
}
More usage
Dependencies
Package | Version | Dev --- |:---:|:---: babel | ^5.8.5 | ✔ babel-eslint | ^4.0.0 | ✔ blue-tape | ^0.1.10 | ✔ coveralls | ^2.11.3 | ✔ eslint | ^0.24.1 | ✔ faucet | 0.0.1 | ✔ isparta | ^3.0.3 | ✔ node-readme | ^0.1.8 | ✔ nsp | ^1.0.3 | ✔ pre-commit | ^1.0.10 | ✔
Author
Stanislav Sysoev [email protected] http://github.com/d4rkr00t
License
- MIT : http://opensource.org/licenses/MIT