Является ли блок try-catch-finally синхронным в node.js?

У меня есть некоторый запуск кода в дочернем процессе в программе node, например:

try{
    var data = fs.readFileSync(urlPath, {"encoding":"utf8"});
} catch (err) {
    console.log("Error reading url file...");
    throw err;
} finally {
    console.log("File read!");
    var array = data.split("\n");

    console.log("Found " + array.length + " urls");

Этот код вызывается из другой программы node, которая должна ждать, пока все операции в этом файле не будут выполнены. К сожалению, дочерний процесс выходит с кодом 0 до того, как выполняется какой-либо код в блоке finally.

Это заставляет меня думать, что даже try-catch-finally является асинхронным. Это правильно?

Ответ 1

Ваш вопрос путается.

Весь язык Javascript полностью синхронный; все языковые конструкции, включая блоки catch и finally, будут выполняться синхронно перед запуском следующей строки кода.

Однако они не знают о каких-либо асинхронных операциях, которые могут начаться, и не будут ждать их завершения.