I think the best argument for having try/catch/else is that it makes it trivial 
to translate promises into async/await. Consider this:

```
let result = a()
.then(b, c)
.catch(d);
```

If we want to translate this 1:1 to try/catch/else in an async function we'll 
end up with something like this:

```
try {
  let x, y;
  try {
    x = await a();
  } catch (e) {
    y = await c(e);
  } else {
    y = await b(x);
  }
  return y;
} catch (e) {
  return await d(e);
}
```

Doing this without `else` would require one of the workarounds suggested 
upthread.

On Thu, Feb 8, 2018, at 7:13 PM, Claude Pache wrote:
> What about the following pattern (labelled block + break)?
> 
> ```js
> processSuggestions: {
>     let suggestions;
>     try {
>       suggestions = await fetchSuggestions();
>     } catch (e) {
>       alert('Failed to load suggestions');
>       break processSuggestions;
>     }
>     showSuggestions(suggestions);
> }
> ```
> 
> —Claude
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to