Need Project Manager

    composite-error

    1.0.2 • Public • Published

    composite-error

    npm version

    'composite-errors' allows you to wrap and re-throw an error, providing additional context without losing the original error information.

    Overview

    • You can wrap one or multiple errors into a CompositeError.
    • You can use the CompositeError class as a base class for your own custom errors that can wrap other errors.
    • The stack property of a CompositeError returns a string containing the stack trace of the CompositeError and the stack traces of the wrapped errors.

    Installation

    $ npm install --save composite-error
    

    Usage

    Wrapping an error

    const CompositeError = require('composite-error');
     
    try {
      doSomething();
    } catch (error) {
      throw new CompositeError('Error occurred while trying to do something.', error);
    }

    Wrapping multiple errors

    throw new CompositeError('Multiple errors occurred', [error1, error2]);

    Creating custom errors

    Using the ES2015 class syntax:

    class MyCustomError extends CompositeError {
      constructor(message, innerErrors) {
        super(message, innerErrors);
        this.name = 'MyCustomError';
      }
    }

    Not using the ES2015 class syntax:

    const util = require('util');
     
    function MyCustomError(message, innerErrors) {
      CompositeError.call(this, message, innerErrors);
      this.name = 'MyCustomError';
    }
     
    util.inherits(MyCustomError, CompositeError);

    Stack trace

    The stack property of a CompositeError returns a string containing the stack trace of the CompositeError and the stack traces of the wrapped errors.

    For example, the following code

    const firstError = new Error('First error');
    const secondError = new CompositeError('Second error', firstError);
    const thirdError = new CompositeError('Third error', secondError);
    console.log(thirdError.stack);

    will produce the following output:

    CompositeError: Third error
        at Object.<anonymous> (/Users/nick/Projects/composite-error/example1.js:7:18)
        at Module._compile (module.js:460:26)
        at Object.Module._extensions..js (module.js:478:10)
        [... snipped for brevity ...]
    --- Inner error: CompositeError: Second error
        at Object.<anonymous> (/Users/nick/Projects/composite-error/example1.js:6:19)
        at Module._compile (module.js:460:26)
        at Object.Module._extensions..js (module.js:478:10)
        [... snipped for brevity ...]
    --- Inner error: Error: First error
        at Object.<anonymous> (/Users/nick/Projects/composite-error/example1.js:5:18)
        at Module._compile (module.js:460:26)
        at Object.Module._extensions..js (module.js:478:10)
        [... snipped for brevity ...]
    --- End of inner error
    --- End of inner error
    

    Accessing inner errors

    The inner errors can be accessed using the CompositeError#innerErrors property.

    License

    MIT

    Install

    npm i composite-error

    DownloadsWeekly Downloads

    22,298

    Version

    1.0.2

    License

    MIT

    Last publish

    Collaborators

    • nickuraltsev