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 d4rkr00t@gmail.com http://github.com/d4rkr00t