这是我的第一个问题,所以请给我反馈。
有问题的文件是一个非常大的文件,所以我正在考虑使用异步读取。
预期行为:
成功:“等待”将导致代码的执行被阻塞,直到文件被读取。
错误:即使等待失败,任何错误都应该被 catch 块捕获。console.log() 应该表明它被捕获了。
Observed:await 失败,完全跳过 catch 块,在 Main 的下一行继续执行。整个异步函数被跳过。在调试器中,我可以看到结果中的正确输出只出现了一瞬间,然后它直接退出了函数。
有人可以告诉我为什么会发生这种情况以及如何解决吗?我的理解是,如果发生异常,catch 块将始终捕获它。请尽可能详细和清晰地解释,我仍在努力掌握 NodeJS 语言。
被注释掉的那行是我认为做同样任务的另一种方式。它也面临同样的问题。当我也有一个时,它甚至跳过了一个“终于”块。
此外,Main 中的“c”变量是调试器中的“待定”承诺。
最后,这段代码的总体目的是解析文本格式的 JSON 文件。这只是更大文件的 MVCE。
const fs = require('fs');
const util = require('util');
async function uploadFile(fileName) {
try {
const readFile = util.promisify(fs.readFile);
result = await readFile(fileName, 'utf-8');
//result = await fs.readFileSync(fileName, 'utf-8');
jsonObj = JSON5.parse(result);
}
catch (err) {
console.log(err);
}
}
function Main() {
fileName = './Diagnostics_Data_Analysis/AddingToDynamoDB/diag.txt';
var c = uploadFile(fileName);
console.log("Done");
process.exit(0);
}
Main();