8.0.0 • Published 9 months ago

yerror v8.0.0

Weekly downloads
1,593
License
MIT
Repository
github
Last release
9 months ago

yerror

It helps to know why you got an error.

GitHub license Coverage Status

Usage

First, require me where you could throw errors:

import YError from '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/nfroidure/yerror/test.js:5:11)
//   at Object.<anonymous> (/home/nfroidure/nfroidure/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/nfroidure/yerror/test.js:5:11)
//    (...)
// YError: E_BAD_TRANSACTION (pay)
//    at Function.YError.wrap (/home/nfroidure/nfroidure/yerror/src/index.js:41:12)
//    at /home/nfroidure/nfroidure/yerror/test.js:16:21
//    at doSomethingAsync (/home/nfroidure/nfroidure/yerror/test.js:11:11)
//    (...)

API

Classes

Functions

YError ⇐ Error

A YError class able to contain some params and print better stack traces

Kind: global class
Extends: Error

YError.wrap(err, errorCode, ...params) ⇒ YError

Wraps any error and output a YError with an error code and some params as debug values.

Kind: static method of YError
Returns: YError - The wrapped error

ParamTypeDefaultDescription
errErrorThe error to wrap
errorCodestring"'E_UNEXPECTED'"The error code corresponding to the actual error
...paramsYErrorParamsSome additional debugging values

YError.cast(err, errorCode, ...params) ⇒ YError

Return a YError as is or wraps any other error and output a YError with a code and some params as debug values.

Kind: static method of YError
Returns: YError - The wrapped error

ParamTypeDefaultDescription
errErrorThe error to cast
errorCodestring"'E_UNEXPECTED'"The error code corresponding to the actual error
...paramsYErrorParamsSome additional debugging values

YError.bump(err, errorCode, ...params) ⇒ YError

Same than YError.wrap() but preserves the code and the debug values of the error if it is already an instance of the YError constructor.

Kind: static method of YError
Returns: YError - The wrapped error

ParamTypeDefaultDescription
errErrorThe error to bump
errorCodestring"'E_UNEXPECTED'"The error code corresponding to the actual error
...paramsYErrorParamsSome additional debugging values

printStackTrace(err) ⇒ string

Allow to print a stack from anything (especially catched errors that may or may not contain errors 🤷).

Kind: global function
Returns: string - The stack trace if any

ParamTypeDescription
errErrorThe error to print

Authors

License

MIT