Just try
Dean Landolt
dean at deanlandolt.com
Sun Nov 1 22:16:16 UTC 2015
On Fri, Oct 30, 2015 at 2:17 PM, Alican Çubukçuoğlu <
alicancubukcuoglu at gmail.com> wrote:
> The recommended way of checking for file existence in Node.js is calling
> `fs.stat()` on the file. If no error was passed to the callback, it exists.
> If "ENOENT" was passed, it doesn't.
>
> If you "promisify" `fs.stat()` and use it with async/await, it throws when
> a file doesn't exist so you end up writing a lot of try/catches. You say
> "Hey, it would be great if I didn't have to keep writing `catch(e){}`." but
> what if the error wasn't "ENOENT"?
>
> That's why I withdrew myself from suggesting such a thing. Carelessly
> silencing errors is no good.
>
> I like the idea of `let stuff = try something()` putting the error in
> `stuff` but the problem is you can throw strings in JavaScript:
>
> ```
> function getUserName() {
> throw 'Error';
> }
>
> const userName = try getUserName();
>
> if (userName instanceof Error) {
> handleError(userName);
>
> return;
> }
>
> console.log('There was no error, yay!');
> // Actually there was
>
I think you missed the tuple destructuring in the example try-expression.
It wasn't:
```js
let errOrValue = try JSON.parse('invalid');
```
But instead:
```js
let [err, result] = try JSON.parse('invalid');
```
This avoids the problem you noted, and actually, plays nice w/ node's
error-first callbacks:
```js
cb.apply(null, try JSON.parse('invalid'));
```
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20151101/440132b2/attachment.html>
More information about the es-discuss
mailing list