0.1.7 • Published 4 years ago

jbdap-nice-error v0.1.7

Weekly downloads
1
License
GPL-3.0
Repository
-
Last release
4 years ago

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 :-)

0.1.7

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago