Javascript Try Catch 与 Catch 链

标签 javascript error-handling promise try-catch

我最近遇到了一个 Javascript 问题,捕获错误,因此在抛出异常时崩溃。

  • funcReturnPromise().then().catch()

我必须将其更改为:

try {
  funcReturnPromise().then()
} catch (e) {
  ...
}

找不到合适的解释,有没有 JS 向导可以启发 JS 农民?

最佳答案

如果funcReturnPromise()可以同步抛出(返回 Promise 的函数通常不应该这样做),那么您必须使用 try/catch 捕获该同步异常,正如您在使用常规 .then() 时发现的那样.

这是一个地方 async函数可以帮助你。例如,如果您声明 funcReturnPromiseasync ,那么它抛出的同步异常将自动成为被拒绝的 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/

相关文章:

javascript - 了解 JS try 和 catch 语句(用于添加自定义 Modernizr 测试)

javascript - 弧形文本中字符串字符之间的间距不太正确。 (HTML Canvas )

error-handling - 在回送资源管理器中添加错误描述

c# - C# 控制台应用程序中未处理的异常导致 AppCrash

javascript - 开 Jest mock promise 方法调用错误次数

javascript - mouseover 和 mouseout 事件的奇怪行为

javascript - 使用 XPath 获取两组元素

error-handling - 无法使用 android studio 在设备上运行应用程序

javascript - 将 Promise 函数推送到数组。使用 Promise.all。 promise 尽早得到解决

javascript - 只需要 Promise 同步性返回,而不是使用 '.then' 时的值