mirror of
https://gitea.com/actions/setup-python.git
synced 2024-11-26 12:09:35 +01:00
49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
/**
|
|
`rethrow` will rethrow an error on the next turn of the JavaScript event
|
|
loop in order to aid debugging.
|
|
|
|
Promises A+ specifies that any exceptions that occur with a promise must be
|
|
caught by the promises implementation and bubbled to the last handler. For
|
|
this reason, it is recommended that you always specify a second rejection
|
|
handler function to `then`. However, `rethrow` will throw the exception
|
|
outside of the promise, so it bubbles up to your console if in the browser,
|
|
or domain/cause uncaught exception in Node. `rethrow` will also throw the
|
|
error again so the error can be handled by the promise per the spec.
|
|
|
|
```javascript
|
|
import { rethrow } from 'rsvp';
|
|
|
|
function throws(){
|
|
throw new Error('Whoops!');
|
|
}
|
|
|
|
let promise = new Promise(function(resolve, reject){
|
|
throws();
|
|
});
|
|
|
|
promise.catch(rethrow).then(function(){
|
|
// Code here doesn't run because the promise became rejected due to an
|
|
// error!
|
|
}, function (err){
|
|
// handle the error here
|
|
});
|
|
```
|
|
|
|
The 'Whoops' error will be thrown on the next turn of the event loop
|
|
and you can watch for it in your console. You can also handle it using a
|
|
rejection handler given to `.then` or `.catch` on the returned promise.
|
|
|
|
@method rethrow
|
|
@public
|
|
@static
|
|
@for rsvp
|
|
@param {Error} reason reason the promise became rejected.
|
|
@throws Error
|
|
@static
|
|
*/
|
|
export default function rethrow(reason) {
|
|
setTimeout(() => {
|
|
throw reason;
|
|
});
|
|
throw reason;
|
|
}
|