我最近遇到了一个 Javascript 问题,捕获错误,因此在抛出异常时崩溃。
funcReturnPromise().then().catch()
我必须将其更改为:
try {
funcReturnPromise().then()
} catch (e) {
...
}
找不到合适的解释,有没有 JS 向导可以启发 JS 农民?
最佳答案
如果funcReturnPromise()
可以同步抛出(返回 Promise 的函数通常不应该这样做),那么您必须使用 try/catch 捕获该同步异常,正如您在使用常规 .then()
时发现的那样.
这是一个地方 async
函数可以帮助你。例如,如果您声明 funcReturnPromise
如async
,那么它抛出的同步异常将自动成为被拒绝的 Promise,并且调用者永远不会暴露于同步异常。
或者,如果调用者(此处的代码)使用await,那么您可以使用相同的 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);
}
}
关于Javascript Try Catch 与 Catch 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58908381/