Luf*_*ffy 3 javascript error-handling try-catch promise
我最近遇到了一个 Javascript 问题,捕获错误并因此在抛出异常时崩溃。
funcReturnPromise().then().catch()我不得不将其更改为:
try {
funcReturnPromise().then()
} catch (e) {
...
}
Run Code Online (Sandbox Code Playgroud)
找不到合适的解释,有 JS 向导可以启发 JS 农民吗?
如果funcReturnPromise()可以同步抛出(返回 Promise 的函数通常不应该这样做),那么您必须使用 try/catch 捕获该同步异常,正如您在使用常规.then().
这是函数可以为您提供帮助的地方async。例如,如果您声明funcReturnPromise为async,那么它抛出的同步异常将自动成为拒绝的承诺,并且调用者永远不会遇到同步异常。
或者,如果调用者(此处的代码)使用await,那么您可以使用相同的.catch捕获同步异常和拒绝的承诺try/catch。
因此,例如,您可以这样做:
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);
}
}
Run Code Online (Sandbox Code Playgroud)