首页 > 解决方案 > JavaScript 返回以及如何使用它来捕获错误

问题描述

在下面的代码中,getExtended() 中没有捕获来自 get() 的错误。

async function get() {
    throw new Error('err in get');
}

async function getExtended() {
    try {
        return get();
    } catch(err) {
        err.message += 'err in getExtended;
    }
}

但是如果我将 get() 的返回值存储在一个变量中,那么返回它会被 try-catch 捕获。这也可以通过在获取后执行 .catch() 来捕获。

无论状态如何,return 是否都会隐式返回调用函数?这里发生了什么?

标签: javascript

解决方案


如果你在try-catch短语中有一个异步函数并且你想捕捉你必须使用的异常:

async function getExtended() {
    try {
        return await get();
    } catch(err) {
        error.message += 'err in getExtended;
    }
}

由于get函数定义为async,必须在您提供的演示代码中不必要地说明。


推荐阅读