Javascript/Typescript library that provides browser- and Observable-friendly error wrappers, inspired by verror.
npm install yandere --save
yarn add yandere
bower install pluralize --save
var yandere = require('yandere');
var YError = yandere.YError;
import { YError } from 'yandere';
try {
hamSandwich.insert(thingy);
} catch (originalError) {
throw YError("cannot insert thingy into ham sandwich", originalError);
// or throw new YError(...);
}
- Stack traces from the thrown YError include the original error's trace.
- The YError's
message
field has both "cannot insert thingy into ham sandwich" and the original error's message.
myObservable.subscribe(
result => /* ... */,
error => myHandler.panic(new YError("trouble with myObserver", error))
);
The myHandler.panic
method has information about both this code and whatever code caused the earlier error
to occur.
Further, the Typescript compiler doesn't complain about mismatching types, as YError really does support any type for its second parameter -- even functions, symbols, and objects with circular references. While such values might not be pretty when displayed, YError is pretty good about handling them without crashing.
var yerr = new YError("Cannot fetch document", "HTTP failure");
yerr.message
resembles, "Cannot fetch document: HTTP failure".yerr.stack
contains its own stack trace, plus "Caused by" ... "HTTP failure".
var yerr = new YError("Cannot fetch document",
new YError("HTTP failure",
new Error("Cannot resolve hostname")));
yerr.message === "Cannot fetch document: HTTP failure: Cannot resolve hostname"
yerr.stack
resembles the following:
YError: Cannot fetch document: HTTP failure: Cannot resolve hostname
at apple (cactus.js:10:20)
...
at banana (palm.js:30:40)
___________
_/ Caused by \___________
YError: HTTP failure: Cannot resolve hostname
at cherry (oak.js:11:24)
...
at kiwi (fuzz.js:31:36)
___________
_/ Caused by \___________
Error: Cannot resolve hostname
at peach (keen.js:292:4)
...
at orange (juice.js:384:12)
npm install
npm run build
npm run test