ember-exception-handling v0.2.0
ember-exception-handling
This addon provides utilities related to exception handling for Ember applications.
Installation
ember install ember-exception-handlingUsage
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(); // trueconstructor(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(); // truematch 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.gitcd ember-exception-handlingnpm install
Linting
npm run lint:hbsnpm run lint:jsnpm run lint:js -- --fix
Running tests
ember test– Runs the test suite on the current Ember versionember test --server– Runs the test suite in "watch mode"ember try:each– Runs the test suite against multiple Ember versions
Running the dummy application
ember serve- Visit the dummy application at http://localhost:4200.
For more information on using ember-cli, visit https://ember-cli.com/.
License
This project is licensed under the MIT License.