It makes simple throw qualified errors.
npm install whoops!Last version


> It makes simple throw qualified errors. Inspired in errno, create-error-class and fault.
- An easy way to create qualified errors.
- Using the standard Error interface in browser and NodeJS.
- Attach extra information, being flexible with whatever user case.
- Less than 50 lines (~500 bytes)
This library is a compromise to provide a clean API for use Error native class.
``bash`
npm install whoops --save
Basically it turns:
`js`
const error = Error('Something is wrong')
error.name = 'DAMNError'
throw error // => 'DAMNError: ENOFILE, Something is wrong'
Into a one line more productive declaration:
`js
const whoops = require('whoops')
const userError = whoops('UserError')
throw userError('User not found') // => 'UserError: User not found'
`
Call whoops to get a constructor function. Every time you call the constructor, you get an Error instance:
`js`
const whoops = require('whoops')
const myError = whoops()
throw myError()
Create domain specific errors providing a className as first argument:
`js`
const whoops = require('whoops')
const userError = whoops('userError')
throw userError()
The qualified error will be extends from Error:
`js`
const whoops = require('whoops')
const userError = whoops('userError')
const error = userError()
console.log(error instanceof Error); // => true
Attach extra information passing a props as second argument:
`jsMy error code is ${err.code}
const whoops = require('whoops')
const userError = whoops('userError', {code: 'ENOVALID'})
const err = userError()
console.log() // => My error code is ENOVALID`
You can associate dynamic props as well:
`jsUser '${props.username}' not found
const whoops = require('whoops')
const userError = whoops('userError', {
code: 'ENOVALID',
message: props =>
})
const err = userError({username: 'kiko'})
console.log(err.message) // => User 'kiko' not found
`
By default you will get Error instances calling whoops, but you can get different errors calling the properly method:
| Name | Method |
|----------------|------------------|
| Error | whoops |
| TypeError | whoops.type |
| RangeError | whoops.range |
| EvalError | whoops.eval |
| SyntaxError | whoops.syntax |
| ReferenceError | whoops.reference |
| URIError | whoops.uri |
If you code implementation is
- synchronous, throws Error. If you just return the Error nothings happens!.Error
- asynchronous, returns in the first argument of the callback (or using promises).
About asynchronous code, is correct return a Object that is not a Error in the first argument of the callback to express unexpected behavior, but the Object doesn't have a type and definitely can't follow a error interface for determinate a special behavior:
`js`
callback('LOL something was wrong') // poor
callback({message: 'LOL something was wrong' } // poor, but better
callback(whoops('LOL, something was wrong') // BEST!
Passing always an Error you can can associated different type of error with different behavior:
`js``
switch (err.name) {
case 'JSONError':
console.log('your error logic here')
break
default:
console.log('undefined code')
break
};
- create-error-class – Create error class.
- fault – Functional errors with formatted output.
MIT © Kiko Beats