Noiseless Praying Mantis

    ember-exception-handling

    0.2.0 • Public • Published

    ember-exception-handling

    Build status

    This addon provides utilities related to exception handling for Ember applications.

    Installation

    ember install ember-exception-handling
    

    Usage

    While some errors in JavaScript applications are typed, and specific types of Errors can be evaluated for, most errors are simply utilizing the Error class. As such, the same exception handling semantics aren't as readily available to JavaScript engineers.

    While the above is true, it's still possible to make use of patterns that help evaluate whether a certain kind of error has been throw. To do this, we employ pattern matching, which allows us flexibility to introspect errors and error properties to determine how to handle each exception.

    This addon comes with a few useful types and utilities.

    PatterMatcher Class

    PatternMatcher is a class used to specify an error pattern to match. The PatternMatcher constructor takes the following forms:

    constructor(error, Function)

    import PatternMatcher from 'exception-handling/utils/pattern-matcher';
     
    const error = new Error('test');
    const matcher = new PatternMatcher(error, function(errorToMatch) {
      return errorToMatch && errorToMatch.message === 'test';
    });
     
    const isMatch = matcher.match(); // true

    constructor(error, Object);

    import PatternMatcher from 'exception-handling/utils/pattern-matcher';
     
    const error = new Error('test');
    const matcher = new PatternMatcher(error, { message: 'test' });
    });
     
    const isMatch = matcher.match(); // true

    match Utility

    TL;DR use when you want to match certain patterns within an error, and rethrow anything not matched.

    import match from 'exception-handling/utils/match';
     
    getResource().catch(
      match({
        matcher: { message: 'test' },
     
        onMatch(e) {
          return [];
        },
      })
    );

    retry Utility

    TL;DR use when you want to retry if a certain pattern is matched, and rethrow anything not matched.

    import retry from 'exception-handling/utils/retry';
    import { resolve } from 'rsvp';
     
    getResource().catch(
      retry({
        matcher: { message: 'test' },
     
        onRetry() {
          return resolve('resolved');
        },
      })
    );

    Contributing

    Installation

    • git clone https://github.com/ember-exception-handling/ember-exception-handling.git
    • cd ember-exception-handling
    • npm install

    Linting

    • npm run lint:hbs
    • npm run lint:js
    • npm run lint:js -- --fix

    Running tests

    • ember test – Runs the test suite on the current Ember version
    • ember test --server – Runs the test suite in "watch mode"
    • ember try:each – Runs the test suite against multiple Ember versions

    Running the dummy application

    For more information on using ember-cli, visit https://ember-cli.com/.

    License

    This project is licensed under the MIT License.

    Keywords

    Install

    npm i ember-exception-handling

    DownloadsWeekly Downloads

    0

    Version

    0.2.0

    License

    MIT

    Unpacked Size

    10.3 kB

    Total Files

    22

    Last publish

    Collaborators

    • brendenpalmer