UNPKG

safely-try

Version:

An elegant try-catch replacement for JavaScript / TypeScript

54 lines (40 loc) 1.58 kB
# safely-try [![Test](https://github.com/jeeyo/safely-try/actions/workflows/test.yml/badge.svg)](https://github.com/jeeyo/safely-try/actions/workflows/test.yml) [![npm](https://img.shields.io/npm/v/safely-try.svg)](https://www.npmjs.com/package/safely-try) `safelyTry()` is an elegant try-catch replacement for JavaScript / TypeScript inspired by [Go error handling](https://go.dev/blog/error-handling-and-go) ## Installation ```bash npm i --save safely-try ``` ## Usage Instead of using ugly native try-catch like this ```typescript let result; try { result = somethingMightThrowException(); } catch(e) { handleTheError(e); } ``` you can use safelyTry to do something like this ```typescript import safelyTry from 'safely-try'; const { data: result, error } = safelyTry(somethingMightThrowException); if (error) { handleTheError(error); return; } ``` --- ```typescript // synchronous functions safelyTry(() => 1) === { data: 1, error: undefined } safelyTry((x, y) => x + y, 1, 2) === { data: 3, error: undefined } safelyTry(() => { throw '1' }) === { data: undefined, error: '1' } safelyTry(() => { throw new Error('1') }) === { data: undefined, error: Error('1') } // asynchronous functions await safelyTry(async () => Promise.resolve(1)) === { data: 1, error: undefined } await safelyTry(async (x, y) => Promise.resolve(x + y), 1, 2) === { data: 3, error: undefined } await safelyTry(async () => Promise.reject('1')) === { data: undefined, error: '1' } await safelyTry(async () => Promise.reject(new Error('1'))) === { data: undefined, error: Error('1') } ```