loading...

TIL: Error catch-bindings are finally optional

stefanjudis profile image Stefan Judis Originally published at stefanjudis.com on ・2 min read

I just made my way through my weekly newsletters and came across the optional catch-binding proposal which shipped in ES2019.

The language addition allows developers to finally omit the error argument when dealing with try/catch statements. This feature can become especially handy in modern JavaScript code that uses async/await a lot.

A few lines of code describe it best:

// classical try/catch
// βœ… works
try {
  throw new Error('oh noes');
} catch(e) {
  console.log(`Error!!! But, I don't care about the error object...`);
} 



// try/catch without error arguments
// ❌ throws "Uncaught SyntaxError: Unexpected token ')'"
try {
  throw new Error('oh noes');

//     πŸ‘‡ omitting the error argument doesn't work...
} catch() {
  console.log(`Error!!! But, I don't care about the error object...`);
} 



// try/catch without error binding
// βœ… works again πŸŽ‰
// (across majors Edge, Firefox, Safari, Chrome)
try {
  throw new Error('oh noes');

//     πŸ‘‡ omitting `()` altogether works now πŸŽ‰
} catch {
  console.log(`Error!!! But, I don't care about the error object...`);
}

This language addition was a little bit controversial, and people discussed it hotly in the proposal repository. Personally, I think it can be handy in some instances of quick prototyping where perfect error handling is secondary.

Reading about the feature, it turned out that major browsers (Chrome, Safari, Edge, Firefox) support the addition already. πŸŽ‰ If you have to support more than the latest and greatest browsers, you can also use the babel plugin to use this new language feature today.

(The MDN docs are currently outdated, and a PR is pending)

If you want to learn more about it, here are some additional resources:

Posted on by:

stefanjudis profile

Stefan Judis

@stefanjudis

DevRel at Contentful. In love with web performance, new technologies, and accessibility – all the good stuff ✌️.

Discussion

pic
Editor guide