Package Exports
- throw2
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (throw2) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
This is a fork of anton-rudeshko/node-throw. If you are familiar with the original project, see Fork Changes below.
throw2
You can't use throw statement in expressions in JavaScript:
arg = arg || throw new Error('arg is required');
// ^^^^^
// Uncaught SyntaxError: Unexpected token 'throw'This tiny library is wrapping throw in a function:
// Use capital T to distinguish this module from the throw keyword
const Throw = require('throw2');
// ...
arg = arg || Throw('arg is required');This is particularly useful when using nullish coalescing operator and optional chaining operator:
value = obj?.nested?.value ?? Throw('value not found');Installation
npm i throw2Require/Import
CommonJS:
const Throw = require('throw2');ESM:
import Throw from 'throw2';More Usage Options
You can compose dynamic error messages by providing multiple arguments:
typeof arg === 'string' || Throw('Invalid arg. Received:', arg, 'Should be string.');You can also use your own error types:
/*...expression...*/ || Throw(new MyCustomError(arg1, arg2));
// Or
/*...expression...*/ || Throw(MyCustomError, arg1, arg2); // Creates a MyCustomError with arg1 and arg2Note
Throw as an expression is currently a Stage 2 TC39 proposal, so this package might no longer be necessary in the future.
Fork Changes
The main difference is that node-throw uses Node.js API,
so it doesn't work in the browser without a polyfill.
throw2 works in any CommonJS environment. (e.g. noje.js and webpack)
Also, printf-like message formatting is not supported by throw2. Use template literals instead; or pass multiple arguments to the function. (see usage examples)
License
MIT