UNPKG

co-try-catch

Version:

go-lang-style error handling using co library

70 lines (47 loc) 1.52 kB
# co-try-catch Provides a nicer way to handle errors avoiding <del>ugly</del> native `try {} catch (e) {}` indentation. ## Example ```js 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... ```js 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 ```js 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'); }); ```