Skip to content

A tiny JavaScript library for safe error-handling. Supports async/await, promises and regular functions. Inspired by Go.

License

Notifications You must be signed in to change notification settings

suzdalnitski/saferr

Repository files navigation

Description

A zero-dependency JavaScript library for error handling. It is inspired by Go, and returns a tuple containing the error and the result instead of throwing an exception.

Unlike other JavaScript libraries (await-to-js), supports async/await, promises and regular functions.

Installation

npm i saferr

Examples

Async

import saferr from "saferr";
import axios from "axios";

const safeGet = saferr(axios.get);

const testAsync = async url => {
  const [err, result] = await safeGet(url);

  if (err) {
    console.error(err.message);
    return;
  }

  console.log(result.data.results[0].email);
};


// prints: zdenka.dieckmann@example.com
testAsync("https://randomuser.me/api/?results=1");

// prints: Network Error
testAsync("https://shmoogle.com");

Sync

import saferr from "saferr";

const syncFunc = shouldThrow => {
  if (shouldThrow) {
    throw new Error("Oops...");
  }

  return "ok";
};

const safeSyncFunc = saferr(syncFunc);

const testSync = ({succeed}) => {
  const [err, result] = safeSyncFunc(succeed);

  if (err) {
     console.error(err.message);
     return;
  }

  console.log(result);
};

// prints: ok
testSync({succeed: true});

// prints: Oops...
testSync({succeed: false});

About

A tiny JavaScript library for safe error-handling. Supports async/await, promises and regular functions. Inspired by Go.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published