2.0.0 • Published 4 years ago

errou v2.0.0

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

errou

Error handling without try/catch blocks.

Actions Status NPM Uses TypeScript

Installing

yarn add errou

# If you're using NPM:
# npm install errou

Why?

Have you ever written some code like:

import fs from 'fs';

let contents;
try {
  contents = readFileSync('foo.txt', 'utf8');
} catch (error) {
  // Deal with `error` here.
}

console.log(`Contents: ${contents}`);

With errou, no more. It abstracts those ugly use cases of try/catch blocks for you. It supports both synchronous and asynchronous functions – in this last case, the function must return a Promise, which will be resolved by errou.

Usage

import fs from 'fs';
import errou from 'errou';

const call = errou(() => fs.readFileSync('foo.txt', 'utf8'));

if (call.ok) {
  console.log(`Contents: ${call.data}`);
}

if (!call.ok) {
  // Deal with `call.error` here.
}

In the previous example, we passed an arrow function, which will be invoked by errou. You can also pass a function reference:

function someFunction(a: string, b: number) {
  if (b % 2 !== 0) {
    throw new Error('Only even numbers are allowed.');
  }
  return { a, b };
}

const call = errou(someFunction, 'Foo', 10);

// call.ok
// call.data
// call.error

TypeScript will complain if errou last arguments does not match with the first function's argument types.

If the function has some overloads, you must pass a lambda as done in the fs.readFile example.

The error type

By default, call.error has the unknown type. You may assert that type to your desired Error instance.

const call = errou(someFn, ...args);

if (!call.ok) {
  console.log((call.error as Error).message);
}

Authors and License

lffg and contributors.

MIT License, see the included MIT file.

3.0.0-0

4 years ago

2.0.0

4 years ago

1.0.0

4 years ago

0.0.0-todo.0

4 years ago