yandere
Javascript/Typescript library that provides browser- and Observable-friendly error wrappers, inspired by verror.
Installation
npm install yandere --save yarn add yandere bower install pluralize --save
Usage
Javascript import
var yandere = ; var YError = yandereYError;
Typescript import
;
With try/catch
try hamSandwich; catch originalError throw ; // 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.
With Observable subscriptions (RxJS)
myObservable;
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.
Technical details
String as a cause
var yerr = "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".
Multiple causes
var yerr = "Cannot fetch document" "HTTP failure" "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)
Unit-testing yandere
npm installnpm run buildnpm run test