最近我遇到了一个Javascript问题,当出现异常时无法捕获错误并导致崩溃。
funcReturnPromise().then().catch()
我不得不将其更改为:
try {
funcReturnPromise().then()
} catch (e) {
...
}
找不到一个好的解释,有没有JS大师能够启发一下JS农民呢?
最近我遇到了一个Javascript问题,当出现异常时无法捕获错误并导致崩溃。
funcReturnPromise().then().catch()
我不得不将其更改为:
try {
funcReturnPromise().then()
} catch (e) {
...
}
找不到一个好的解释,有没有JS大师能够启发一下JS农民呢?
funcReturnPromise()
可以同步抛出异常(返回 Promise 的函数通常不应该这样做),那么您需要通过 try/catch 来捕获同步异常,就像您在使用普通的 .then()
时发现的那样。async
函数可以帮助您的场景。例如,如果您将 funcReturnPromise
声明为 async
,那么它抛出的同步异常将自动变成一个被拒绝的 Promise,调用者将不会暴露于同步异常中。try/catch
捕获同步异常和被拒绝的 Promise。async function myFunc()
try {
let result = await funcReturnPromise();
console.log(result);
} catch (e) {
// this catches both a rejected promise AND
// a synchronously thrown exception
console.log(e);
}
}