【发布时间】:2018-12-11 18:25:51
【问题描述】:
我试图理解为什么上传函数中的 catch 块没有捕获 createReleaseVersion 函数中 request(.....) 行之后抛出的异常。 nodejs 脚本崩溃,异常未处理。控制台只显示异常的错误。
在下面的代码中,我希望先打印“得到你”,然后打印“之后”,但它没有发生。
如果我将 throw 替换为 return reject (...同一个对象),那么我会得到所需的输出。
我先打印“得到你”,然后打印“之后”
function createReleaseVersion(releaseVersion) {
var options = {
uri: 'https://someurl',
method: 'POST',
json: {'version': releaseVersion}
};
return new Promise(function(resolve, reject) {
request(options, function (error, response, body) {
throw {
error: error,
response: response,
body: body
};
console.log(body);
if (error) {
throw {
error: error,
response: response,
body: body
};
} else {
resolve();
}
});
});
}
async function upload(releaseVersion) {
try {
await createReleaseVersion(releaseVersion);
} catch (error) {
console.log('got you');
}
console.log('after');
}
upload('ddd');
【问题讨论】:
-
相关问答:stackoverflow.com/questions/25143476/…(认为它很有用——但不是真正的重复)
标签: node.js error-handling promise async-await