# jbdap-nice-error

> A friendly new javascript Error class which can trace the whole error chain and info.

Latest version **0.1.7** (published 2020-07-12) · GPL-3.0 license · 0 weekly downloads

## Install

```sh
npm install jbdap-nice-error
pnpm add jbdap-nice-error
yarn add jbdap-nice-error
bun add jbdap-nice-error
```

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.7 |
| Published | 2020-07-12 |
| First published | 2019-05-18 |
| Weekly downloads | 0 |
| License | GPL-3.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 43.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | JBDAP TEAM |
| Maintainers | jbdap |

## Links

- npm: https://www.npmjs.com/package/jbdap-nice-error
- npm.io page: https://npm.io/package/jbdap-nice-error

## Dependencies (1)

- [jbdap-makeup](https://npm.io/package/jbdap-makeup.md) ^0.1.5

## Recent versions

- 0.1.7 (latest) — 2020-07-12
- 0.1.6 — 2020-07-11
- 0.1.5 — 2020-07-08
- 0.1.3 — 2019-05-18
- 0.1.2 — 2019-05-18
- 0.1.1 — 2019-05-18

## README

# JBDAP-Node-Makeup

### A friendly new javascript Error class which can trace the whole error path and info.

## **Install**

~~~
npm install jbdap-nice-error --save
~~~

or

~~~
yarn add jbdap-nice-error
~~~

## **API**

### Class NiceError

- Property
    - name - String - error name
    - message - String - error message
    - info - Object - context infomation about the error
    - stack - String - stack trace of the error
- Method
    - fullMessage() - String - get all the messages of the error chain path 
    - fullStack() - String - get all the stack infomations of the error chain path
    - fullInfo() - Object - merge all the info objects in this error chain into one big info object

## **Demo**

#### Handling inner error

~~~
// a normal js Error
let err = new Error('This is a normal error')

// a NiceError which takes err as it's inner error
let ne1 = new NiceError('A normal error was caught!',{
    name: 'NiceError',
    cause: err,
    info: {
        foo: 'foo'
    }
})

// another NiceError which takes ne1 as it's inner error
let ne2 = new NiceError('An inner NiceError was caught!',{
    name: 'AppError',
    cause: ne1,
    info: {
        bar: 'bar'
    }
})

console.log(ne2.message)
------------------------------
An inner NiceError was caught!

console.log(ne2.fullMessage())
------------------------------
[AppError]: An inner NiceError was caught! <= [NiceError]: A normal error was caught! <= [Error]: This is a normal error

console.log(ne2.fullStack())
----------------------------
[AppError]: An inner NiceError was caught! <= [NiceError]: A normal error was caught! <= [Error]: This is a normal error
        at Object.<anonymous>.test (/test/NiceError.test.js:18:15)
        at Object.asyncJestTest (/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:102:37)
        at resolve (/node_modules/jest-jasmine2/build/queueRunner.js:43:12)
        at new Promise (<anonymous>)
        at mapper (/node_modules/jest-jasmine2/build/queueRunner.js:26:19)
        at promise.then (/node_modules/jest-jasmine2/build/queueRunner.js:73:41)
        at process._tickCallback (internal/process/next_tick.js:68:7)
    Caused by [NiceError]: A normal error was caught! <= [Error]: This is a normal error
        at Object.<anonymous>.test (/test/NiceError.test.js:11:15)
        at Object.asyncJestTest (/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:102:37)
        at resolve (/node_modules/jest-jasmine2/build/queueRunner.js:43:12)
        at new Promise (<anonymous>)
        at mapper (/node_modules/jest-jasmine2/build/queueRunner.js:26:19)
        at promise.then (/node_modules/jest-jasmine2/build/queueRunner.js:73:41)
        at process._tickCallback (internal/process/next_tick.js:68:7)
    Caused by [Error]: This is a normal error
        at Object.<anonymous>.test (/test/NiceError.test.js:10:15)
        at Object.asyncJestTest (/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:102:37)
        at resolve (/node_modules/jest-jasmine2/build/queueRunner.js:43:12)
        at new Promise (<anonymous>)
        at mapper (/node_modules/jest-jasmine2/build/queueRunner.js:26:19)
        at promise.then (/node_modules/jest-jasmine2/build/queueRunner.js:73:41)
        at process._tickCallback (internal/process/next_tick.js:68:7)

console.log(ne2.fullInfo())
---------------------------
{
    foo: 'foo',
    bar: 'bar'
}
~~~

#### Handling unexpected thown object as inner error

~~~
let err = { foo: 'bar'}
try {
    // just throw an object
    throw err
}
catch(err) {
    // a NiceError which takes the thrown object as inner err
    let ne1 = new NiceError('An object was thrown',{
        name: 'NiceError',
        cause: err
    })

    console.log(ne1.fullMessage())
    ------------------------------
[NiceError]: An object was thrown <= [Throw]: type = [object Object], content = {"foo":"bar"}

    console.log(ne1.fullStack())
    ----------------------------
[NiceError]: An object was thrown <= [Throw]: type = [object Object], content = {"foo":"bar"}
    at Object.<anonymous>.test (/test/NiceError.test.js:38:19)
    at Object.asyncJestTest (/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:102:37)
    at resolve (/node_modules/jest-jasmine2/build/queueRunner.js:43:12)
    at new Promise (<anonymous>)
    at mapper (/node_modules/jest-jasmine2/build/queueRunner.js:26:19)
    at promise.then (/node_modules/jest-jasmine2/build/queueRunner.js:73:41)
    at process._tickCallback (internal/process/next_tick.js:68:7)
Caused by [Throw]: type = [object Object], content = {"foo":"bar"}
    at Object.fullStack (/test/NiceError.test.js:45:25)
    at Object.asyncJestTest (/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:102:37)
    at resolve (/node_modules/jest-jasmine2/build/queueRunner.js:43:12)
    at new Promise (<anonymous>)
    at mapper (/node_modules/jest-jasmine2/build/queueRunner.js:26:19)
    at promise.then (/node_modules/jest-jasmine2/build/queueRunner.js:73:41)
    at process._tickCallback (internal/process/next_tick.js:68:7)
}
~~~

## Enjoy it :-)

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