当前位置: 首页 > 面试题库 >

尝试用JavaScript捕获JavaScript承诺中的错误…catch

羊浩广
2023-03-14
问题内容

因此,我希望我的第一级捕获是处理错误的捕获。反正有没有将我的错误传播到第一个陷阱?

参考代码,尚不可用:

Promise = require('./framework/libraries/bluebird.js');

function promise() {
    var promise = new Promise(function(resolve, reject) {
        throw('Oh no!');
    });

    promise.catch(function(error) {
        throw(error);
    });
}

try {   
    promise();
}
// I WANT THIS CATCH TO CATCH THE ERROR THROWN IN THE PROMISE
catch(error) {
    console.log('Caught!', error);
}

问题答案:

使用新的异步/等待语法,您可以实现此目的。请注意,在编写本文时,并非所有浏览器都支持此功能,您可能需要使用babel(或类似的东西)来转换代码。

// Because of the "async" keyword here, calling getSomeValue()
// will return a promise.
async function getSomeValue() {
  if (somethingIsNotOk) {
    throw new Error('uh oh');
  } else {
    return 'Yay!';
  }
}

async function() {
  try {
    // "await" will wait for the promise to resolve or reject
    // if it rejects, an error will be thrown, which you can
    // catch with a regular try/catch block
    const someValue = await getSomeValue();
    doSomethingWith(someValue);
  } catch (error) {
    console.error(error);
  }
}


 类似资料:
  • 问题内容: 考虑以下代码块: 显然,与此有关的问题是,如果用户DB失败,则将执行THEN(USER)块。另一种选择是将第一个捕获块移动到链的末尾。但是,这会引起另一个问题!我们将无法区分错误是来自用户数据库还是信用卡。 我认为解决了以下问题的以下模式是否被视为无极反模式?有更好的方法吗?我看到的问题是,您可能会陷入半回调地狱。 编辑:我想我还不太清楚。如果还有更多的THEN块,该怎么办,如下所示。

  • 问题内容: 有没有办法捕获in 中发生的错误并可能将其标记为页面中的错误? 举个简单的例子,假设我试图在一个不存在的HTML控件上绑定一个事件,我的浏览器抛出一个错误: 现在,如果我希望相同的错误无法通过我的selenium测试,并且浏览器上显示的消息将显示为错误消息。 可以做这样的事情吗? 问题答案: 将此脚本放在页面上,然后在Selenium中检查JSError:

  • 问题内容: 我正在尝试用正确的方法表示正确的方法,以指示内发生故障。 如果诺言没有失败,(即返回诺言的操作是否正常工作,例如返回状态200的AJAX请求),但是我认为结果无效,通常我会这样做弹出窗口,向用户说明问题,然后执行“返回假”;尽早退出该方法。 但是,有了承诺,如果我想从.then()内部做类似的事情,我就被引导去相信我应该做的是抛出一个错误,而应该让它被.catch()抓住。 ),我已经

  • 问题内容: 从数据库取回数据时遇到问题。我正在尽力解释这个问题。 1.如果在下面的代码中保留“ mode”:“ no- cors”,则可以使用Postman从服务器获取数据,而不能使用自己的服务器获取数据。认为这一定是我的客户端错误 当我删除“ mode”:“ no-cors”时,我得到2个错误:-Fetch API无法加载http:// localhost:3000 /。飞行前响应中的Acces

  • 问题内容: 使用诺言时,如何正确地退出取消按钮而不会引发错误?我的代码会发出带有所需复选框的警报确认。该代码按应对用户执行的方式执行,但会在控制台窗口中引发错误: 没抓住(承诺)取消 问题答案: 更新(2017年1月): 此问题已在v7中修复:v7升级指南↗ 您需要向Promise添加拒绝处理程序。另外,您可以使用一种快速的方法来简单地排除错误: PS。您使用的软件包称为SweetAlert 2

  • 我已经写了一个节点。使用express框架的jsapi。我正在使用wait和async。我在try-catch块中捕获异步函数。但是,在catch(err)方法中,不会返回err。 在上面的例子中,我故意调用一个不存在的函数,这样它就会抛出一个错误。 我得到的答复如下。它正在命中catch块,但没有将错误添加到数据对象中。 但是,如果我将下面的行移出try catch块。控制台将抛出以下错误。 所