1.0.3 • Published 7 months ago

@normality/thrown v1.0.3

Weekly downloads
-
License
MIT
Repository
-
Last release
7 months ago

MIT Licence npm version

thrown

Handle specific exceptions in Typescript like you would do in classic OOP languages.

Install

npm i @normality/thrown

yarn add @normality/thrown

Usage

The module exports a single utility thrown(err):

import { thrown } from '@normality/thrown';

try {
  // Might throw TypeError.
  doSomething(someArg);
} catch (err: any) {
  thrown(err)
    .catch(TypeError, e => {
      // "e" is of type TypeError.
      // Special handling for TypeError...
    })
    .rethrowUncaught(); // Any non TypeError will be thrown.
}

Catch multiple error types:

try {
  // Might throw TypeError or a custom SomeError class.
  doSomething(someArg); // Might throw TypeError.
} catch (err: any) {
  thrown(err)
    .catch(TypeError, e => {
      // Special handling for TypeError...
    })
    .catch(SomeError, e => {
      // Special handling for SomeError...
    })
    // Any non TypeError will be thrown as is.
    .rethrowUncaught();
}

Using a predicate:

const isSomeError = (err: any): err is CustomError => {
  return true;
}

try {
  // Might throw TypeError or a custom SomeError class.
  doSomething(someArg); // Might throw TypeError.
} catch (err: any) {
  thrown(err)
    .catch(TypeError, e => {
      // Special handling for TypeError...
    })
    .catchPredicate(isSomeError, e => {
      // Special handling for SomeError...
    })
    // Any non TypeError will be thrown as is.
    .rethrowUncaught();
}

Catch any other type of error:

try {
  // Might throw TypeError or a custom SomeError class.
  doSomething(someArg); // Might throw TypeError.
} catch (err: any) {
  thrown(err)
    .catch(TypeError, e => {
      // Special handling for TypeError...
    })
    .catch(SomeError, e => {
      // Special handling for SomeError...
    })
    .catchAny(e => {
      // Will catch errors that are not TypeError nor SomeError.
      // Beware that you are responsible for rethrowing in this case.
    });
}

Rethrow a generic error:

try {
  // Might throw TypeError or a custom SomeError class.
  doSomething(someArg); // Might throw TypeError.
} catch (err: any) {
  thrown(err)
    .catch(TypeError, e => {
      // Special handling for TypeError...
    })
    .catch(SomeError, e => {
      // Special handling for SomeError...
    })
    // If not TypeError nor SomeError, rethrow a default error.
    .rethrowUncaught(new Error(err.message));
}

License

Copyright (c) 2023 Sylvain Estevez

This project is licensed under the MIT License - see the LICENSE file for details.

1.0.3

7 months ago

1.0.2

7 months ago

1.0.1

7 months ago

1.0.0

7 months ago