/error-class

Typed errors for JavaScript that closely emulate the native Error class.

Primary LanguageJavaScriptMIT LicenseMIT

Error Class

Build Status npm Version License

This module provides typed errors that closely emulate the native Error class to a pedantic degree.

$ npm install error-class

Usage

The default export is a function that accepts only one argument, the name of the typed error.

const errorClass = require('error-class')
const SpecialError = errorClass('SpecialError')
const instance = new SpecialError('foobar')
instance.message // 'foobar'

Details

const errorClass = require('error-class')
const HumanError = errorClass('HumanError')

const hungryError = new HumanError('I\'m hungry!')
hungryError.message // 'I'm hungry!'
hungryError.stack // Platform-specific error stack trace.
hungryError.hasOwnProperty('name') // false
hungryError.hasOwnProperty('message') // true
hungryError.hasOwnProperty('stack') // true

// Just like native errors, it doesn't require using `new`.
const thirstyError = HumanError('I\'m thirsty!')
Object.keys(thirstyError).length === 0 // True, all properties are non-enumerable.
Object.keys(Object.getPrototypeOf(instance)).length === 0 // Prototype non-enumerable.
thirstyError.constructor === HumanError // True.
thirstyError instanceof Error // True, errors inherit from native `Error` class.
thirstyError instanceof HumanError // Also true, of course.

License

This software is licensed under the MIT License.