Eraz

An error handler for Node code

Installation

npm install eraz

Usage

Throw an error at some point during the request/response cycle to be handled by middleware to return the required Http response status code and attributes as JSON.

Example

const { BadRequestError } = require('eraz');

function doSomething(data) {
    if (data === undefined) throw new BadRequestError('No data provided.');
    // ...else continue computation
};

The Http response will include a status code of 400 along with the error message No data provided.

Extra attributes

An error can be instantiated with additional attributes passed in.

Example

const { BadRequestError } = require('eraz');

function doSomething(data) {
    if (data.requiredAttribute === undefined) throw new BadRequestError('Required attribute is undefined.', data);
    // ...else continue computation
};

The Http response will include a status code of 400 along with the error message Required attribute is undefined. and this time the object is being passed in as a parameter which will be included in the Http response as JSON.

Http Errors

Name Code
BadRequestError 400
UnauthorizedError 401
ForbiddenError 403
NotFoundError 404
NotAcceptableError 406
ProxyAuthenticationRequiredError 407
RequestTimeoutError 408
ConflictError 409
GoneError 410
LengthRequiredError 411
PreconditionFailedError 412
RequestEntityTooLargeError 413
RequestURITooLongError 414

Middleware

Express

const express = require('express');
const { expressHandler } = require('eraz');

const app = express();

app.use(expressHandler);

Custom Errors

Custom errors can be created using the generator with name being the only required attribute.

generator(attributes [, ParentError]);

Example

const { generator } = require('eraz');

const CustomError = generator({
    name: 'CustomError',
    foo: 'bar'
});

Example

const { generator, NotFoundError } = require('eraz');

const CustomError = generator({
    name: 'CustomError',
    foo: 'bar'
}, NotFoundError);

if (false) throw new CustomError('Handled as a 400 but with the foo attribute included.');

Contributtions

PR's welcome on github.