node package manager
Orgs are free. Discover, share, and reuse code in your team. Create a free org »

yerror

YError

Better errors for your NodeJS code.

NPM version Build status Dependency Status devDependency Status Coverage Status Code Climate

Usage

First, require me where you could throw errors:

var YError = require('yerror');

Then, emit errors with a bonus: parameters!

function doSomething(pay, action) {
  if(parseInt(pay, 10) !== pay) {
    throw new YError('E_BAD_PAY', pay, action);
  }
}
 
doSomething('nuts', 'code');
 
 
// YError: E_BAD_PAY (nuts, code) 
//   at doSomething (/home/nfroidure/simplifield/yerror/test.js:5:11) 
//   at Object.<anonymous> (/home/nfroidure/simplifield/yerror/test.js:9:1) 
//   (...) 
 

You don't have to use constant like error messages, we use this convention mainly for i18n reasons.

Also, you could want to wrap errors and keep a valuable stack trace:

function doSomethingAsync(pay, action) {
  return  new Promise(function(resolve, reject) {
    try {
      doSomething(pay, action);
      resolve();
    } catch(err) {
      reject(YError.bump(err));
    }
  });
}
 
doSomethingAsync('nuts', 'code')
  .catch(function(err) {
    console.log(err.stack);
  });
 
// YError: E_BAD_PAY (nuts, code) 
//    at doSomething (/home/nfroidure/simplifield/yerror/test.js:5:11) 
//    (...) 
// YError: E_BAD_TRANSACTION (pay) 
//    at Function.YError.wrap (/home/nfroidure/simplifield/yerror/src/index.js:41:12) 
//    at /home/nfroidure/simplifield/yerror/test.js:16:21 
//    at doSomethingAsync (/home/nfroidure/simplifield/yerror/test.js:11:11) 
//    (...) 
 
 

API

YError(msg:String, ...args:Mixed):Error

Creates a new YError with msg as a message and args as debug values.

YError.wrap(err:Error, msg:String, ...args:Mixed):Error

Wraps any error and output a YError with msg as its message and args as debug values.

YError.cast(err:Error, msg:String, ...args:Mixed):Error

Return YError as is or wraps any other error and output a YError with msg as its message and args as debug values.

YError.bump(err:Error, fallbackMsg:String, ...fallbackArgs:Mixed):Error

Same than YError.wrap() but preserves the message and the debug values of the YError errors.

Stats

NPM NPM