# composite-error

> Error wrapping in Node.js

Latest version **1.0.2** (published 2017-03-30) · MIT license · 0 weekly downloads

## Install

```sh
npm install composite-error
pnpm add composite-error
yarn add composite-error
bun add composite-error
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.2 |
| Published | 2017-03-30 |
| First published | 2015-06-13 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Nick Uraltsev |
| Maintainers | nickuraltsev |
| Keywords | error, wrapping, stacktrace, stack, trace |

## Links

- npm: https://www.npmjs.com/package/composite-error
- Repository: https://github.com/nickuraltsev/composite-error
- Homepage: https://github.com/nickuraltsev/composite-error#readme
- Issues: https://github.com/nickuraltsev/composite-error/issues
- npm.io page: https://npm.io/package/composite-error

## Alternatives

- [@sentry/react-native](https://npm.io/package/@sentry/react-native.md) — 2.6M weekly downloads
- [@ardatan/aggregate-error](https://npm.io/package/@ardatan/aggregate-error.md) — 708.1K weekly downloads
- [custom-error-generator](https://npm.io/package/custom-error-generator.md) — 2.0K weekly downloads
- [@technik-sde/prosemirror-recreate-transform](https://npm.io/package/@technik-sde/prosemirror-recreate-transform.md) — 1.5K weekly downloads
- [@suchipi/error-utils](https://npm.io/package/@suchipi/error-utils.md) — 78 weekly downloads

## Recent versions

- 1.0.2 (latest) — 2017-03-30
- 1.0.1 — 2017-02-24
- 1.0.0 — 2016-09-15
- 0.1.1 — 2015-06-13
- 0.1.0 — 2015-06-13

## README

# composite-error

[![npm version](https://badge.fury.io/js/composite-error.svg)](https://badge.fury.io/js/composite-error)

'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

```javascript
const CompositeError = require('composite-error');

try {
  doSomething();
} catch (error) {
  throw new CompositeError('Error occurred while trying to do something.', error);
}
```

### Wrapping multiple errors

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

### Creating custom errors

Using the ES2015 class syntax:

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

Not using the ES2015 class syntax:

```javascript
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

```javascript
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](https://github.com/nickuraltsev/composite-error/blob/master/LICENSE)

---
_Source: https://npm.io/package/composite-error · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
