Handling error in Promises

Marius Gundersen gundersen at gmail.com
Tue Jan 13 04:44:04 PST 2015


A `promise.done()` method that throws if it receives a rejected promise has
been discussed, but the consensus seems to be that browsers instead should
report on rejected unhandled promises that are garbage collected. This is
already implemented in Firefox (at least in the DevTools edition), where
the following code will end up with an error in the console:

```js
var p = new Promise(function(){throw new Error("oh noes");})
p = null;
```

Since there is no way to handle the thrown error outside the promise (the
exception is thrown after the function returns) there isn't any reason for
the exception to travel up the stack. Either the exception must be handled
as a rejected promise or it must be handled in something like
`window.onerror`.

Marius Gundersen

On Tue, Jan 13, 2015 at 12:35 PM, Boopathi Rajaa <legend.raju at gmail.com>
wrote:

> ```
> Promise
>   .resolve()
>   .then(function(){
>     throw new Error('asdf');
>   });
> ```
>
> Bluebird: (errors thrown - Good)
> http://jsbin.com/kahuzi/1/edit?html,js,console
>
> native ES6:(errors not thrown)
> http://jsbin.com/qivobibowa/3/edit?html,js,console
>
> Shouldn't all Uncaught errors be thrown, instead of catching it inside the
> promise only ? For example, If I use Promise within a promise, the uncaught
> error in the inner Promise will never be exposed to the outside world and
> there is no way to bubble it up to the outside blocks.
>
> `.catch(function(err) { throw err; }) `
>
> will also be caught and nothing would be thrown.
>
> - Boopathi
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20150113/492bccb9/attachment.html>


More information about the es-discuss mailing list