better-try-catch
Try-catch wrapper for easy error handling. Inspired by await-to-js.
Installation
$ npm install better-try-catch
Usage
var btc = var err result = arg1 arg2if !err // ... // You can also use better-try-catch with async/await functions { var err result = await arg1 arg2 if !err // ... } // Or even use with functions that accept node-style callback: { var err result = await btc'data.json' 'utf8'}
I didn't see it's "better?"
Consider a situation like this:
try catch err // The varaible `err` is only visible in the catch block// With the code goes here, the variable `err` is no longer existing// If we have to make sure there wasn't anything went wrong above// How do we know that?if !err // ...
Humm, it should be not too hard to solve. After one or three minutes of thinking, we have the code rearranged to be like this:
var err // Hoist the error variable declarationtry catch ex err = ex // Note here // Also, we can not simply place the `if` statement inside the catch block // Since if no errors occured then the `if` statement will not execute at all// Alright, this time we are able to safely access the error variable outside the try-catch blockif !err // ...
Okay, seems the problem has gone, with the only exception that the code looks a little more messy now. C'mon! Can't we do it better? better-try-catch to the rescue™!
var btc = // better-try-catch wraps the function and will catch errors for you// The wrapped function will *always* return both error and value// Which somewhat looks like the node-style callbacksvar err result = // And that's all we have to do, as simple as you can seeif !err // Was there anything went wrong? // Nope, we are perfectly sure that everthing is running well as expected! :D
License
MIT License, Copyright (c) 2017 Riophae Lee