Skip to content
/ no-try Public

Clean up code by removing try-catch-finally blocks! πŸš€

License

Notifications You must be signed in to change notification settings

Coly010/no-try

Repository files navigation

πŸš€ 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);

About

Clean up code by removing try-catch-finally blocks! πŸš€

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published