JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1459
  • Score
    100M100P100Q101201F
  • License MIT

Clean up code by removing try-catch-finally blocks.

Package Exports

  • no-try
  • no-try/index.esm.js
  • no-try/index.js

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 (no-try) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

🚀 No-Try 🚀

Clean up your code base by removing those ugly try-catch-finally blocks!


😍 About

Working in a code base where you can expect methods to throw can lead to situations where your logic is wrapped in try-catch blocks. It also leads to other code design problems. 🤢

no-try tackles this by removing the try-catch to an external method, whilst allowing the flexibility of handling the error thrown appropriately and getting access to the return value of the method that will throw. 🤘🤘

🔧 Installation

npm install --save no-try

🎸 Usage

First we need to set up our import

JavaScript (all)

const useTry = require("no-try").useTry;
const useTryAsync = require("no-try").useTryAsync;

TypeScript or ES6+

import { useTry, useTryAsync } from "no-try";

Now let's use it

// Without a custom error handler
const [error, result] = useTry(() => myThrowableMethod());

// With a custom error handler
const [err, res] = useTry(
  () => myThrowableMethod(),
  error => {
    console.log(error);
  }
);

// Handle methods that return a Promise without a custom error handler
const [err2, res2] = await useTryAsync(() => myAsyncThrowableMethod());

// Handle methods that return a Promise with a custom error handler
const [err3, res3] = await useTryAsync(
  () => myAsyncThrowableMethod(),
  error => {
    console.log(error);
  }
);

// Use result
if (error || err || err2 || err3) {
  // Show error alert
}

sendMyResultToMethod(result);