这个问题涉及一些nodejs代码。我试图清除关于异常处理方式以及promise / async函数如何相似/不相似的想法。
我大大简化了代码,在下面提供了一个(非功能性的)示例。我有一个函数(uploadFile)返回一个承诺。该函数调用另一个引发异常的异步函数。
const Linebyline = require('line-by-line');
const uploadFile = (filename) => new Promise((resolve,reject) => {
console.log(`Upload ${filename}`);
const lr = new Linebyline(filename);
lr.on('line',async (line) => {
// Another async function throws an error here,// replacing it with a simple "throw" to clarify things:
throw(new Error("failed"));
}
}
async function top() {
try {
await uploadFile('test.txt');
} catch (err) {
console.log(`Err: ${err}`);
}
}
使用此方案,我得到了未处理的拒绝。由于我在上层函数中有一个try / catch调用uploadFile,因此我希望该catch可以处理子调用中几乎所有的工作。
如果我在uploadFile中捕获了“ throw”并将其转换为拒绝,那么一切都很好。
很明显,不是打电话给我,我是在找麻烦,但是我真的不理解那个“掷”产生的事件链吗?
谢谢。