co-try-catch

0.5.0 • Public • Published

co-try-catch

Provides a nicer way to handle errors avoiding ugly native try {} catch (e) {} indentation.

Example

const { tryCatch } = require('co-try-catch');
 
function *getData() {
  const response = yield tryCatch(makeAsyncRequest(options));
  if (response.failed()) {
      /* handle error */
 
     return /* and stop function execution */;
  }
 
  /* continue with the normal function execution */
  console.log(response.getResult());
}
 

...also, if you prefer...

const { err, result } = yield tryCatch(makeAsyncRequest(options));
 

Api

*tryCatch(gen: Function|Function*|Promise): TryCatchResult

TryCatchResult

isError(): Boolean

Returns if function has thrown an error

isSuccess(): Boolean

Returns if function didn't throw an error

failed(): Boolean

alias of isError()

succeeded(): Boolean

alias of isSuccess()

getError(): Mixed

Returns the thrown object

getResult(): Mixed

Returns result of the function execution

Supports nested calls

if a function call returns an instance of TryCatchResult it is passed up to the caller

const { tryCatch } = require('co-try-catch');
 
co(function*() {
  const exception = function *() { thrown new Error('test'); }
  const fn1 = function *() { return yield tryCatch(exception()); };
  const fn2 = function *() { return yield tryCatch(fn1)); };
 
  const result = tryCatch(f2());
  result.isError().should.equals(true);
  result.getError().message.should.equals('test');
});
 

Readme

Keywords

Package Sidebar

Install

npm i co-try-catch

Weekly Downloads

0

Version

0.5.0

License

ISC

Last publish

Collaborators

  • rainder