It helps to know why you got an error.
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)
// (...)
A YError class able to contain some params and print better stack traces
Kind: global class Extends: Error
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
Param | Type | Default | Description |
---|---|---|---|
err | Error | The error to wrap | |
[errorCode] | string | "'E_UNEXPECTED'" | The error code corresponding to the actual error |
[...params] | YErrorParams | Some additional debugging values |
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
Param | Type | Default | Description |
---|---|---|---|
err | Error | The error to cast | |
[errorCode] | string | "'E_UNEXPECTED'" | The error code corresponding to the actual error |
[...params] | YErrorParams | Some additional debugging values |
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
Param | Type | Default | Description |
---|---|---|---|
err | Error | The error to bump | |
[errorCode] | string | "'E_UNEXPECTED'" | The error code corresponding to the actual error |
[...params] | YErrorParams | Some additional debugging values |
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
Param | Type | Description |
---|---|---|
err | Error | The error to print |